Nice. CMake is a confusing soup of leaky abstractions, so any attempt to explain it better is always helpful. But the IDE I use (CLion) is just smart enough to spit out a barely-legal CMakeLists.txt (globs? What's that? We list out each source file by name!), so technically I'm a CMake user. ;)