Best build tool for D projects

Chris Molozian chris at cmoz.me
Sat May 14 03:41:13 PDT 2011


Thanks for recommending Waf, I'll have a look at it.

On 14/05/11 08:54, Russel Winder wrote:
> Chris,
>
> On Fri, 2011-05-13 at 18:38 +0100, Chris Molozian wrote:
> [ . . . ]
>>        * Jam (ftjam), cross-platform and platform independent build
>>          language. Lots of variants with the same name, therefore
>>          finding it hard to find good tutorials and documentation.
> Everyone I know who has used this either loves it (very few people) or
> hates it (almost everyone).  The claim is the notation is poor, and you
> have to do lots of tweaking even of stuff that should be "out of the
> box".
>
>>        * Boost.Build (bjam), not sure how it differs to ftjam.
> See above.  From what I can tell an increasing number of Boost projects
> are moving away from this build framework.
>
> Based on the above I have never used it myself.
>
>>        * Cook, can't find whether it can be built for use on Windows.
>>          No pre-built Windows binary. Very extensive documentation,
>>          although I think the default build file name is silly
>>          "Howto.cook" :-) .
> I've not come across this one.
>
>> After all this preamble I guess what I'm asking is... what (if any)
>> cross-platform build tools does everyone use with their D projects?
>> Any feedback on experiences with any of the build tools I've mentioned
>> is also greatly appreciated. If you can suggest any alternatives,
>> please do.
>>
>> If you've read this far, thanks for taking the time to read it  :-)
>> and sorry for the long message.
> No problem.
>
>> PS: I've seen the CMakeD module, I know a lot of people recommend
>> CMake for cross-platform builds and that the KDE guys use it. I have
>> tried to like it... but settled on hating it. The procedural language
>> is daft and ugly and I loathe the CMakeLists.txt file that goes in
>> each directory. I've already ruled it out.
> I can't say I blame you, I think there language is outrageously
> horrible.
>
> I am sure others will highlight a few other choices but the mainstream
> ones remain:
>
>          Make
>          Autotools
>          CMake
>          SCons
>          Waf
>
> Personally I have abandoned Make and Autotools as being out of date and
> too crufty.  Historically they are massively important systems, and so
> deserve praise and honour.  But time has moved on and new lessons
> learned.
>
> CMake is out already.
>
> SCons is a Python-based, internal DSL system.  I know the D support
> reasonably well as at some point 18 months ago I found myself deemed the
> official support for the D tool.  SCons is truly great in some build
> situation -- it's really a Make replacement with some very interesting
> bells and whistles, and of course all the power of a dynamic language --
> but for other situations it can be slow and a bit clunky.  My main use
> is its sweet spot, so I use it a lot.
>
> Waf was a system built on SCons, then it was a SCons fork, now it has
> evolved to be something different in its own right.  It is Python based
> and is intended to be an Autotools replacement.  Its real sweet spot is
> "whole-project, ship source, and build locally" or some subset thereof.
> I like Waf.
>


More information about the Digitalmars-d mailing list