User:Maffblaster/Drafts/Comparison of build systems

From Gentoo Wiki
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.

See also

  • Build automation — software that automates the compilation, clean up, and installation stages of the software creation process.