4 ms·
Make is solving many complicated tasks, like keeping in mind when to re-run some target (there is communication going on with the compilers that provide make .d
by est31 4y ago
Make is solving many complicated tasks, like keeping in mind when to re-run some target (there is communication going on with the compilers that provide make .d files so that they know which source files influence a binary), or running job servers managing parallelism that also support nested sub-makes. But it also has many ugly warts. It's hard to design something that solves both those tasks as well as make does, and also as generalist as make does. Often they are solving a subset, what currently itches the main developer. But something that is both as general, and as comprehensive as make, those tools are rare. Ninja for example checks many of the boxes, but lacks make jobserver support.
- bXVsbGVy 4y agoNinja looks clean because it is new. Give it some decades and it is likely inherit a few of warts make has.
- aappleby 4y agoIt's not that new, and in practice there aren't very many ways for it to get warty because it's basically a dependency graph with "run this command line if this node is dirty" attached to the edges. I like it very much.
- LtWorf 4y agoNinja is so cool… until you can't compile stuff because the author had a different ninja version than what's on your distribution…