Nice to see a detailed practice-oriented article written by someone that doesn’t quite like CMake by itself but recognizes it usefulness. I find myself in a similar situation, and although I’ve been reading a bit about it before, skimming this I’ve already learned several useful things about CMake, so this is the reference I’ll use when attempting to add CMake to a small program in a few days.
Two observations from someone who’s used cmake since 2010 and neither loves nor hates it:
I think this article makes cmake seem like a darker art than it really is.
I don’t think 3.0 is such a “modern cmake” bright line as its made out to be. It didn’t make older approaches (or even very many older CMakeLists.txt files) stop working and gave nice paths to outgrow some of the cumbersome older techniques that were no longer needed. And some of the best “modern” stuff didn’t really develop until after that. Especially stuff related to CMAKE_CXX_STANDARD and target features.