On Wednesday, 24 September 2014 at 21:12:15 UTC, Andrei
Alexandrescu wrote:
On 9/24/14, 1:10 PM, H. S. Teoh via Digitalmars-d wrote:
That's unfortunate indeed. I wish I could inspire them as to
how cool a
properly-done build system can be.
[snip]
That's all nice. However: (1) the truth is there's no clear
modern build tool that has "won" over make; oh there's plenty
of them, but each has its own quirks that makes it tenuous to
use; (2) any build system for a project of nontrivial size
needs a person/team minding it - never saw such a thing as it's
just all automated and it works; (3) especially if the build
system is not that familiar, the role of the build czar is all
the more important.
So the reality is quite a bit more complicated than the shiny
city on a hill you describe.
Andrei
It depends on who you ask, I guess. I don't know what the
definition of "has won" here is. make is certainly widespread,
but so is C, Java and Javascript and I don't have much respect
for those. I wouldn't use make again unless external forces made
me. For one, it's slower than some of the alternatives, which
admittedly only matters for larger builds (i.e. somebody's
personal project on Github isn't ever going to see the
difference, but a company project will).
I'm saying this because I'm actively working on changing my
company's existing build systems and did a migration from
autotools to CMake in the past. I also looked at what was
available for C/C++ recently and concluded it was better to go
with the devil I know, namely CMake. From what I know, premake is
pretty good (but I haven't used it) and tup looks good for
arbritary rules (and large projects), but the ease of using CMake
(despite its ridiculously bad scripting language) beats it. For
me anyway.
BTW, I totally agree with 2) above. Build systems are sort of
simple but not really and frequently (always?) balloon out of
proportion. As alluded to above, I've been that czar.
If I were to write a build system today that had to spell out all
of its commands, I'd go with tup or Ninja. That CMake has support
for Ninja is the icing on the cake for me. I wrote a Ninja build
system generator the other day, that thing is awesome.
Make? I'd be just as likely to pick ant. Which I wouldn't.
Atila
P.S. I've thought of writing a build system in D, for which the
configuration language would be D. I still might. Right now, dub
is serving my needs.
P.S.S autotools is the worse GNU project I know of