| Learning to use CMake/autotools is kind of like learning SQL when all you know is Python. CMake/autotools syntax is nothing like C/C++, or actually any general purpose programming language, so you basically need to become familiar with this new language/paradigm in addition to knowing C/C++. But like with most programming languages, once you grok it you will more easily learn other build systems. They all solve similar problems after all. You just gotta pick one and learn it. I mean, you don't have to, you can write your own build scripts in bash or whatever but eventually you'll just end up inventing a new, probably crappy build system :) > really hard for me to read and understand. I agree and empathize. I tried figuring them out by looking at other people's Makefiles but they are all so wildly different between projects, it's like there is no standard/convention to writing them (and there is not as far as I can tell). Additionally, make has so much magic/internal/inferred/assumed behavior, variables etc. that it's really hard to figure out what they do by just reading them. Especially since they don't use familiar flow control structures like functions calls or even gotos. This also makes debugging hard. I only learned make when I've started writing my own C/C++ projects. The documentation is actually quite good. Going from make to CMake was much easier then. |