Comment by pantalaimon
7 months ago
Auto-generated Makefiles that CMake and Autotools produce really leave a bad impression on how complex Makefiles need to be.
7 months ago
Auto-generated Makefiles that CMake and Autotools produce really leave a bad impression on how complex Makefiles need to be.
Good news, you can change the output then! And for as much as you might not like its generated Makefiles, I assert that $(cmake -G Ninja) is 100,000,000x more "wtf" than -G Makefiles
I disagree about the autotools ones, I find them very sane although autotools itself can die in a rotting dumpster out back. And take m4 with it.
Ninja isn't really a reasonable comparison to make. Ninja is explicitly not designed to be human authored like Makefiles are. Ninja is designed to be an output from some build system generator like CMake and doesn't make affordances for humans as it's intended for machine generation and machine consumption so it can be _very_ fast (which it is).
Yeah, m4 is powerful in its way, and has an extraordinary strength-to-weight ratio (check out the implementation in Software Tools in Pascal) but ultimately I think it turned out to be a mistake. Make, by contrast, turned out to be a good idea despite its flaws.
Specifically, any generated makefile that refuses to take advantage of GNU make is necessarily going to be horrible.
BSD make is ... viable I guess, but only really worth it if you're already in the ecosystem - and even then I can't guarantee you won't hit one of its silly limitations.
Yeah, I guess trying to read the output of gcc -O -S would make assembly language seem pretty overwhelming, too.