3 ms·
> Half of the post complains about syntax. FWIW, a lot of complaining about syntax only looks like complaints about "syntax" to someone who already understands
by ajross 4y ago
> Half of the post complains about syntax.
FWIW, a lot of complaining about syntax only looks like complaints about "syntax" to someone who already understands the tool. The problem with cmake is that it's underlying execution model is a huge frothing mess.
Is that all-caps thing a variable name or a string or a special token being passed to the function to make it do something special? What's the difference between a target and a rule again? What's the difference between a property and a variable again? When do I need to manually expand list elements and when don't I? How does All That Wrapping work when I just want to pass one -fno-this-bad-warning flag?!
To someone who knows cmake, all that fury sounds like someone complaining about mechanics. Cmake allows you to do all that stuff, just maybe with funny "syntax", so what's the problem?
The problem is that even those of us who have to use it professionally, regularly, Just Can't Understand The Thing at anything more than a superficial level, despite knowing all our other tools with depth and grace. That's the sign of a bad tool.
- palata 4y agoI respectfully disagree. I could say the same about any programming language. What is this `if (...)` function? Where is it defined? Why are some functions already there, while others I need to write myself? How does memory work when I just want to run computations with data? What is the difference between a primitive type and an object again? What the hell is an anonymous function? I don't think it's that hard to learn the basics with CMake, and it's completely worth it when we have to use it professionally.
- kaba0 4y agoPeople have a mental model of programming languages, and a better language won’t make you question it all that much, most things should be somewhat understandable even by just knowing another language in the same paradigm. Cmake is its own universe of random conventions duck taped together, and is famously hated. It is a great tool in that cross-platform building of C/C++ programs is a very hard problem and it is the de facto choice for that since it can solve it, but that doesn’t make criticism of its abstractions/language less true. It really is terrible.