I heard some people say screw these CMake, Autotools, Makefiles, Ninjas, mesons, etc. Compilation of even big projects takes seconds. Just use a batch file on Windows and shell script on Linux. It was Casey Muratori on his Handmade Hero stream. I think he is right and most projects don't need even a Makefile.
I've been learning CMake recently and it seems that quite literally every part of it is ridden with edge cases and weird bumps. Like:
- Variables can have a type, but it's not really a type, it's for GUI only.
- There are cache variables but regular variables take precedence except if you set a cache variable with FORCE. But if you do so, then it hides the normal variable and you get different behaviour on subsequent runs.
- Variables can be combined in an array, except it is a string separated by ;.
- There is a bunch of deprecated syntax that you shouldn't use but should be aware of. You should start your CMakeList.txt files with a weird conditional that sets the minimum required version using a syntactic hack.
- It ignores $CPPFLAGS in some cases, Arch Wiki said so.
- There are multiple values for true and false. Things like YES, 1, ON, TRUE, NO, 0, OFF, FALSE.
- For older versions of CMake a string literal can evaluate to the value of similarly named variable.
- It is really a programming language. There is seems to be so much to it, it doesn't look limited
I just started to learn. It's not a big deal, but it feels messy.
I've been learning CMake recently and it seems that quite literally every part of it is ridden with edge cases and weird bumps. Like:
I just started to learn. It's not a big deal, but it feels messy.