<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    I asked about build tools for D on the mailing list a while ago. I
    needed a solution that allowed me to mix C++ and D builds in a
    cross-platform way with minimum fuss. You can find the discussion
    about it <a
href="http://www.digitalmars.com/d/archives/digitalmars/D/Best_build_tool_for_D_projects_136103.html">here</a>
    (you were also a part of it IIRC). My biggest requirement at the
    time was:<br>
    <ul>
      <li>Keeping platform checks e.g. IF (MAC) {} ELSE IF(LINUX) {} ...
        etc. to an absolute minimum. What's the point in a
        cross-platform language if when you build projects in it you
        need to write a short essay for the build system...</li>
      <li>Pre-built binaries available to all platforms (or as many as
        possible).</li>
    </ul>
    In the end I settled for <a
      href="http://www.freetype.org/jam/index.html">Jam (ftjam)</a>, it
    works tremendously well. It's easy to get binaries for almost any
    operating system (especially with projects like <a
      href="http://mxcl.github.com/homebrew/">homebrew</a> for Mac). I
    have very few gripes with it:<br>
    <ul>
      <li>The build description language is very simple (once you fully
        grok it), but could have done with a lot more example-based
        documentation.</li>
      <li>It's missing a few features like recursive-directory scanning
        (for source files), and the ability to pipe the output from a
        program into a variable in the build script (e.g. C++FLAGS =
        `llvm-config --cxxflags`).<br>
      </li>
      <li>A convenient way to force all generated object and library
        files into a dedicated build folder. It's possible but not very
        easy to do.</li>
      <li>I'm a big fan of convention over configuration, I know it's a
        very subjective topic but I like the way Maven3 and Gradle
        assume a project structure (that you can deviate from if you
        need to). This usually requires very good supporting
        documentation.<br>
      </li>
    </ul>
    The build script I put together for my project looked like this, <a
      href="http://mysticpaste.com/private/TCcTE6KGxn">http://mysticpaste.com/private/TCcTE6KGxn</a>
    .<br>
    <br>
    Hope this helps,<br>
    <br>
    Chris<br>
    <br>
    <br>
    On 07/13/11 02:02, Nick Sabalausky wrote:
    <blockquote cite="mid:ivir89$2t5i$1@digitalmars.com" type="cite">
      <pre wrap="">The recent discussions about package managers and buildsystems has prompted 
me to get off my ass (or rather, *on* my ass as per how programming is 
usually performed...) and start on the D-based rake-inspired buildtool I've 
been meaning to make for awhile now. It's not actually usable yet, but 
there's a sample drakefile demonstrating everything, and it does actually 
compile and run (but just doesn't build the dependency tree or actually run 
any of the build steps). *Should* work on Posix, but I only tested on 
Windows, so I may have fucked up the Posix version...

Apologies to Jacob Carlborg for the name being so close to "dake". Didn't 
really know what else to call it ("Duck", maybe?) Like dake, it's inspired 
by Ruby's Rake. But unlike dake, the buildscript is written in D instead of 
Ruby, which was my #1 reason for making a Rake alternative.

Before I go implemeting everything, I'd like to get input on it. Is it 
something that could be a major D tool?

Overview of Drake and links to all the code are here:

<a class="moz-txt-link-freetext" href="https://bitbucket.org/Abscissa256/drake/wiki/Home">https://bitbucket.org/Abscissa256/drake/wiki/Home</a> 


</pre>
    </blockquote>
  </body>
</html>