DBBS - Directory Based Build System v 0.8

In my mind, a build system should not only simplify the overall compilation process, but it should be very easy to maintain. Unfortunately, the build systems that I have used (make, automake, a variety of make variations, Visual Studio, and so on) have been less then stellar in the maintenance department. Namely, you have to tell the build system when ever you add, move, or remove files. This tends to become very tedious, especially as a project grows in size.

In order to alleviate this annoyance, I've designed a build system with a emphasis on automation and the following features.

Features:
  • Minimum to no modifications to the config files:
    • In order to simply the overall build process, the DBBS configuration files are designed to be written once and then copied to any directory the DBBS will manage. This is possible since you do not have to specify a single source file. Rather, you just specify some general rules and commands.

  • Easy to modify configuration files:
    • Of course, you will still probably need to edit a configuration file every now and then. As such, the configuration files are designed to be fairly easy to edit and modify.

  • Support multiple configuration files:
    • While the DBBS can manage an entire project with just one configuration file, the ability to build multiple executables and libraries can be very useful. As such, the DBBS will check each directory for a configuration file, allowing you to specify specific build procedures for an entire directory tree. This effectively allows you to develop a external library, and then just copy and paste it's folder into another project.

  • Automatic source file location:
    • Instead of manually having to specify each file the build system will manage, the DBBS will automatically enumerate files and subdirectories. In other words, you should not have to change a single line in configuration file when ever you add, modify, or move any source files.

  • Automatic internal dependency resolution:
    • Rather then having to specify what a file depends on, the DBBS will automatically attempt to detect them for you.

  • Smart minimum rebuilding:
    • Like any good build system, the DBBS supports minimum rebuilding. In other words, when a file changes, only the modified file will be rebuilt. The DBBS takes this concept one step further and implements a smarter minimum rebuild system. The DBBS will only recompile a file if the changes will actually affect the compiled program. IE, the DBBS will automatically ignore all comment and white space when checking for changes.

  • Fast:
    • Compiling a project can already take an extensive amount of time, so the DBBS was designed to be as fast as possible.

Unfortunately the DBBS is not perfect. In exchange for the automation, you sacrifice some flexibility. Namely, the DBBS cannot be directly used to specify environment specific configuration information (what OS is being used, what CPU architecture, and similar) to the compiler, and it currently only supports C/C++ files.