2 ms·
People hate Make because it doesn't define any conventions for its use. You can use it to do anything, but it does very little by default. This gives you a trem
by jschwartzi 11y ago
People hate Make because it doesn't define any conventions for its use. You can use it to do anything, but it does very little by default. This gives you a tremendous amount of freedom to declare exactly what it means to "build" an arbitrary component, but it also means you have to declare it yourself.
Many of the modern build tools move away from that. CMake, for instance, drops the ability to build arbitrary assemblages of files and focuses almost exclusively on giving you a nicely-constrained language for defining compilation targets and allowing you to support many different compilers.
Maven, Ivy, and it's ilk focus on declaring run-time dependencies and on some concept of a "build l lifecycle."
Having used all these systems, I find that there are things I need to do when running a build that I can easily do in Make, but which are encumbered significantly by other tools.
Make's syntax sucks, and it expects you to know a bunch of arcane stuff about how your project is built, but in exchange you get the ability to build literally anything.
- mzs 11y agoIn fact there is a lot of convention typically installed by default: $ make -pf /dev/null | wc -l 359 Those suffix rules are enough for many projects, and a great example to follow if you need something different.