An automated software build turns declared source inputs and dependencies into outputs through repeatable tool steps, such as code generation, compilation, linking and packaging. A build description defines those steps and their dependencies; a build system decides their order and may reuse outputs whose relevant inputs have not changed.
For example, changing a header can require recompiling several source files before relinking a computer program. Omitting that dependency can produce a stale executable even when every individual compiler invocation succeeds. In continuous integration, the automated build provides a repeatable check of the integrated revision, often combined with tests.[ref]
Continuous Integration by Martin Fowler. Automate the Build and Make the Build Self-Testing
Repeatability requires identifying tool versions, generated inputs and configuration as well as the main source files.A build system executes declared transformations from source files and other inputs to build outputs, respecting their dependency graph. Common steps include code generation, compilation, linking and packaging. CMake describes builds through targets such as executables and software libraries, with dependencies between them.[ref]
cmake-buildsystem in the CMake documentation. Introduction and Binary Targets
For example,
main.o and math.o must exist before they can be linked into an executable. If only the source for math.o changes, an incremental build can reuse main.o, rebuild math.o and relink. Reuse is valid only when every relevant requirement has been tracked: a changed header, tool option or generated input can invalidate an apparently unchanged output. Correct dependency declarations are part of build correctness. Articles by others on the same topic
There are currently no matching articles.