

One of the things you get to learn about CMake is that everything is a string! It causes lots of issues when developing complex build systems (or even simple ones) depending on quoting, even something you unset is just an empty string. Being a former maintainer I felt the disappointment when half my packages had internal copies of stuff I was packaging, and now I had to try and untangle it! Namespaces in CMake These were primarily to aid in getting developers up and running, and to avoid adding third party libraries/dependencies to my project itself. I wrote some of the first superbuilds for a project called Titan with Sandia National Labs, I added superbuilds for the Open Chemistry projects and Tomviz too.

I was also involved in discussions of Boost’s CMake-based Ryppl project. I was proud of what we had back then, but it is indeed showing its age. I even had compliments on how self contained things were, along with critiques of whether it was really right to call find_package for the same package more than once in a project. I designed Avogadro 2’s build system to be “modern CMake” as I had debated with many at Kitware and in the KDE community. It seems to have its nucleation in about 2017 where I find a number of posts, talks, etc. I can neither confirm nor deny that I found myself sitting at my desk at gone 1am immersing myself in what “Modern CMake” was exactly, and what I wanted to apply to the Avogadro build system. Something an old mentor told me to never do is call a thing “Modern …” as you can guarantee someone will be chuckling in 10-20 years.
