User:Maffblaster/Drafts/Comparison of build systems
From Gentoo Wiki
< User:Maffblaster | Drafts
Jump to:navigation
Jump to:search
This article provides a brief comparison of various build systems.
Basic information
Description | Autotools | CMake | SCons |
---|---|---|---|
Works without install | Partially (unless build system files are modified) | No | No |
Requirements (for build) | shell, make | CMake (installed), make | SCons (installed) |
Requirements (for the tool itself) | perl | C++, libarchive, curl, expat | Python 2 (3.x not supported) |
Build system file format | shell + m4, make with extensions | Custom | Python scripts |
Common features
Description | Autotools | CMake | SCons |
---|---|---|---|
Respecting build environment (CC, CFLAGS, LDFLAGS...) | Yes | Yes | When supported by the package |
Respecting install paths (bindir, libdir...) | Yes | When supported by the package | When supported by the package |
Straightforward (template) install for packages without libraries | Yes | Yes | No |
Straightforward (template) install for packages with libraries | Yes | No | No |
Ability to build libraries | Yes | Yes | Without SONAMEs |
Separated configuration from build | Yes | Yes | No |
Parallel build support | Yes | Yes | Yes |
Configuration cache support | Yes | No | Yes |
Ability to build source packages | Yes | When supported by the package via CPack | When supported by the package |
Ability to build binary packages | No | When supported by the package via CPack | When supported by the package |
Support for out-of-source builds | Yes | Yes | When supported by the package |
Modifying build system files without reconf | No | Yes | Yes |
Note
When supported by the package usually means that the build system provides methods to solve the problem but requires users to explicitly use/enable/alias them in their build system files.
When supported by the package usually means that the build system provides methods to solve the problem but requires users to explicitly use/enable/alias them in their build system files.
See also
- Build automation — software that automates the compilation, clean up, and installation stages of the software creation process.