i used to see a project with CMakeLists.txt files and go "all right, so it's black magic"
it's more high-level in reality though. instead of passing linker flags, you're telling CMake to use your compiler toolchain to do stuff like "include everything needed for library X and enable these compile flags for it"
@freemo it's a small miracle that it works, really. after creating a CMake file, i could send a project to my Windows-using friend, with Git submodules for dependencies, and it just built.