navigation

build documentation


build is a set of build system scripts and related tools, built around GENie project generator tool.
Visit project page on GitHub

build dramatically simplifies creating and maintaining projects and solutions.
Here is a list of main design goals for build:

  • Minimize work needed to add/remove projects
  • Centralized configuration maintenance (compiler/linker switches and flags, etc.)
  • Extensible with per project customizations and dependencies
  • Hierarchical dependency tracking
  • Out of the box support for popular 3rd party libraries - biased towards my needs :)

Overview


build is written in Lua and is highly extensible.

Major motivation for creating build comes from years of maintenance hell for variety of projects, their configurations and dependencies. Even with project generator tools there’s often a fair amount of repetitive work per project and build strives to remove this extra work while providing additional convenience.

Here is an example of adding a static library project to a solution:

This function call with do the following:

  • Search for directory named ‘myLibrary’
  • Create project named ‘myLibrary’ and add it to active solution
  • Add source files (C++) found in ‘myLibrary’ directory to the project
  • Setup compiler and linker switches and flags
  • Setup precompiled header files

But why stop there? build also tracks dependencies and include paths, allows additional configurations per-project and allows physical code design to be very modular.