text: reggae 0.3.1
  A build system in D
  To use this package, put the following dependency into your project's dependencies section:
  Reggae
  A build system in D. This is alpha software, only tested on Linux and likely to have breaking changes made.
  Features
  - Write readable build descriptions in D
  - Out-of-tree builds
  - Backends for GNU make, ninja and a binary executable backend.
  - User-defined variables like CMake in order to choose features before compile-time
  - Low-level DAG build descriptions + high-level convenience rules to build C, C++ and D
  - Automatic header dependency detection for C, C++ and D
  - Automatically runs itself if the build description changes
  - Rules for using dub build targets in your own build decription - use dub with ninja, add to it, ...|binary> </path/to/project>. This will create
  the actual build system depending on the backend chosen, for
  Ninja,
  GNU Make, or a runnable
  executable, respectively. The project path passed must either:
  Dub projects with no
  reggaefile.d will have one generated for them in the build directory.
  How to write build configurations
  The best examples can be found in the features directory.
  Each
  reggaefile.d must contain one and only one function with a return value of type
  Build. This function can be generated automatically with the
  build template mixin. The
  Build struct is a container for
  Target structs, which themselves may depend on other targets.
  Arbritrary build rules can be used. Here is an example of a simple D build
  reggaefile.d:
  import reggae; const mainObj = Target("main.o", "dmd -I$project/src -c $in -of$out", Target("src/main.d")); const mathsObj = Target("maths.o", "dmd -c $in -of$out", Target("src/maths.d")); const app = Target("myapp", "dmd -of$out $in", [mainObj, mathsObj]); mixin build!(app);
  That was just an example. To build D apps with no external dependencies, this will suffice:
  import reggae; alias app = executable!(App("src/main.d", .3.1 released 4