They read project config and generate build files for lower level build engine
Autotools
It is native to Unix/Linux
Files
Input: configure.ac, Makefile.am
Output: ./configure script, Makefile.in templates, and finally Makefile
consists of
autoconf
Reads your configure.ac file and converts it into the giant, portable ./configure shell script.
automake
Reads your Makefile.am files and generates standard Makefile.in templates that comply with GNU standards.
libtool
Safely builds libraries for all operating systems.
autoreconf
Helper script to run autoconf and automake
Generate build files for Makefile only
# Run by the Developer (requires Autotools):# Generates the './configure' script from configuration filesautoreconf -i# Run by the End-User (does NOT require Autotools)# Scans the system and generates the local 'Makefile'./configure
CMake
It is cross-platform, and can run on Linux, macOS, Windows
Files
Input: CMakeLists.txt
Output: based on the build system
consists of
cmake
reads CMakeLists.txt and generate build files
can perform compilation and installation
ctest
runs unit tests
cpack
takes compiled program and automatically packages it into installers like .deb (Ubuntu), .dmg (macOS) or .msi (Windows)