Make vs Build Alternatives
The cluster debates the strengths and weaknesses of Make as a build system, questioning why alternatives like CMake, SCons, Bazel, and Justfile exist and whether they are superior in syntax, extensibility, and usability for various projects.
Activity Over Time
Top Contributors
Keywords
Sample Comments
Why don't people just use make?
If make is so great, why did people create systems like CMake, QMake, SCons, Bazel, etc.?Or how about: https://news.ycombinator.com/item?id=21571559Fabricate looks nice and simple!
Perhaps you just chose the wrong tool for the job. Just because you are able to do similar things with make, doesn't mean it is has to be suited to your chosen use case. It's a tool that was created with a specific purpose in mind, with specific constraints, and it works fine for thousands (I assume) of people every day. You can't blame it for not being a general-purpose programming language. Make isn't beyond building other tools that you can write yourself - and use in the
What's wrong with just using a makefile?
Why not just use make? I am constantly confused by people reinventing the wheel with new syntax and little benefit
This reminds me on 'Make vs. X' trend some years ago, where Make would be bashed how is slow, not extensible, had weird syntax and incompatible between implementations. So we got alternatives like Aegis[1], Scons[2], A-A-P[3] or Jam[4] instead, which were much faster and flashier on paper.But guess what, Make is still kicking, GNU Make got a bunch of new goodies (Guile scripting or loadable modules to name a few) and all those alternatives are pretty much dead now. What I see now is
Make is the worst build system... except for all the others.
Justfile is my favorite. Anything that requires complexity I just use Zig build. I hate make with a passion. I could see why people stick with it after learning it for decades, but for the rest of us it is a nightmare.
I'd encourage anyone thinking of using make to look at alternatives. Make is great, but is quickly becomes a ball of duct-tape. Make works very well when you spend the time to express your dependency tree, but realistically that never happens and people tend to add hacks upon hacks for Makefiles. Not only that, but they don't scale well as your project adds more components, such as integration testing, documentation, etc.I found Earthly[0] to be a great replacement. Everything runs
I would argue the main reason is that Make is just bad. There are easier to use alternatives such as scons or rake that don't have this effect applied to them.