I was surprised that I couldn't find a page describing what (I at least) would call a
BuildSystem. Maybe they're something that's only required by people doing largish scale
CeePlusPlus projects? Or maybe I just failed to search effectively. Anyway, here goes my definition - if I'm wrong then please feel free to delete this page and point me to the correct one. --
DamyanPepper
A
BuildSystem is the tool used as part of the
BuildProcess to generate executable code from source code. It is used day-by-day by developers to compile their code (and hence are generally the first thing for people to complain about.)
BuildSystems generally have the following features:
- ability to build different configurations (debug, release etc.)
- ability to support CrossCompiling to multiple platforms
- some concept of modules and their dependencies (library A is needed by executable B, so build A before B)
- ability to build a single module
BuildSystems are usually built on top of an existing tool in such a way that users of the
BuildSystem can do general tasks (like adding new source files or new modules) without posessing intimate knowledge of how the tool it is built upon works. Examples of tools a
BuildSystem may be built on:
However, tools like
VisualStudioDotNet may also be considered to be a build system even though they are pretty self contained. It is also rumoured to be possible to build a build system that generates
VisualStudioDotNet vcproj files.
A
BuildSystem may also have a built-in
UnitTest/
SmokeTest routine that runs on a regular basis, generating
GreenBars (or not).