These two are not interchangeable or really even comparable though?
For GNU Make, yes they are. These are fully comparable tools for writing sophisticated dynamic build systems. “Plain make”, not so much.
[cmake] makes your build system much, much more robust, far easier to maintain, much more likely to work on other systems than your own, and far easier to integrate with other dependent projects.
This is absolutely incorrect. I assume (although I have never witnessed it) that a true master of cmake could use it to create a robust, maintainable, transferable build system. Very much like there are people who are able to make delicate ice sculptures using a chainsaw. But in no way does these properties follow from the choice of cmake as a build system (as insinuated in your post), rather, the word we are looking for here is: despite using cmake.
I apologize for my inflammatory language. I may just have a bit of PTSD from having to build a lot of other people’s software through multiple layers of meta build systems. And cmake comes back, time and time again, as introducing loads of obstacles.
For GNU Make, yes they are. These are fully comparable tools for writing sophisticated dynamic build systems. “Plain make”, not so much.
This is absolutely incorrect. I assume (although I have never witnessed it) that a true master of cmake could use it to create a robust, maintainable, transferable build system. Very much like there are people who are able to make delicate ice sculptures using a chainsaw. But in no way does these properties follow from the choice of cmake as a build system (as insinuated in your post), rather, the word we are looking for here is: despite using cmake.
I apologize for my inflammatory language. I may just have a bit of PTSD from having to build a lot of other people’s software through multiple layers of meta build systems. And cmake comes back, time and time again, as introducing loads of obstacles.