CMake is for everyone :-)

In the June 14th, Developer bi-weekly videoconference, several people indicated that they are reluctant to review changes to the GROMACS CMake infrastructure due to lack of familiarity. We actually face an alarming situation for project health when we can’t find 3 project participants willing and able to participate in merge requests to maintain core infrastructure.

According to GitHub, 3.3% of the GROMACS repository is CMake (the same as Python, while only 1.8% is CUDA).

I expect that Mark will be including a fair bit of CMake related content for his material in the upcoming Learn to code in GROMACS workshop, but there may be plenty of project contributors who could use a refresher or a reference for “modern CMake,” as it has come to be used in the last few years (and since most of the GROMACS CMake infrastructure was originally written).

If you are (or would like to be) a GROMACS contributor, but don’t feel comfortable maintaining its build system or packaging infrastructure, please consider allocating some time to learn more about CMake. If you find the official CMake documentation overwhelming or ineffective, I recommend the resources available at and linked from the following documentation project.

https://cliutils.gitlab.io/modern-cmake/

The document is easy to skim to find out what you don’t know. Once you understand what the interesting topics are, there are well organized and concise explanations of important concepts and features. In case a part of the document is too concise to answer a specific question, you will at least get enough information that you know what to search for in the official CMake docs.

1 Like

Hi Eric,

I fully agree with the post and thanks for linking the modern CMake guide.

I will add that build systems are solving hard problems and it would be unreasonable to expect the code to be simple. It is, however, true that some solutions are better than others and modern CMake is among the best solutions that are available.