2 ms·
>Why? What's wrong with Make? The list is long, but here's a random sample: - If you have an atomic step that produces multiple targets, it confuses make,
by ur-whale 6y ago
>Why? What's wrong with Make?
The list is long, but here's a random sample:
- If you have an atomic step that produces multiple targets, it confuses make, and encoding the fact properly in the Makefile is *really* not straightforward.
- tabs are indeed a pain
- make's DSL (the part that pre-processes the Makefile before feeding it to whatever shell you want) is really ugly. In particular, using '$' in the commands is a disaster coz make will chew on those before passing them to the shell.
- Oh yeah, and $ABC is in fact understood as "evaluate variable A" and concatenate with the string "BC". Ugh.
- managing "generated" dependencies (.e.g. includes) is a pain, especially if you try to have make manage the generating step
- managing dependencies on the actual content of the Makefile itself is a pain (as in: if I change the Makefile, what should be rebuilt?)
- Make has no (or rather very little) introspection capabilities and even less self-introspection capabilities. If you want a proof of that fact, try to build a graphviz graph of the dependencies, or better: know what commands will be executed if you change a specific file.
- The many warts an bags on the side that make grew over the years (.PHONY anyone?)
- Recursive Makefiles are a nightmare and make is simply not equipped to deal with them
- etc...
- nrclark 6y ago> If you have an atomic step that produces multiple targets, it confuses make, and encoding the fact properly in the Makefile is really not straightforward. Make does have a lot of warts, but this isn’t one of them any more. Grouped targets were added in the most recent release of GNU Make, and they address exactly this problem. Re: your other points, many of them boil down to “the syntax is weird”. I agree 100%, and also it’s not so tough once you get used to it. I use GNU Make for tons of things, and I like it a lot.
- ur-whale 6y ago> . Grouped targets were added in the most recent release Very good to know, thank you (that's indeed in release 4.3 IIUC) > e: your other points, many of them boil down to “the syntax is weird”. I don't think lack of introspection or recursive Makfiles or generated deps. falls in the "syntax is weird" column. Weird syntax I can leave with. Lack or very difficult to use essential features are a different story.