What is CMake?
CMake is free and open-source software for controlling the compilation process using compiler and platform-independent configuration files. It can generate native build tool files (such as Makefiles) and IDE project files for popular integrated development environments such as Microsoft Visual Studio, Xcode, and Eclipse CDT.
CMake uses an innovative build system based on targets and properties. These replace the old commands add_compile_options, include_directories, link_libraries, and many others. Targets are reusable and can represent libraries, compile options, compiler flags, compilation definitions, and even applications that have multiple dependencies.
Modern CMake features an automated graphical interface for creating and managing the build system. The GUI can be launched directly from the command line or from a GUI plugin for popular IDEs such as Microsoft Visual Studio and Xcode. The GUI provides a powerful and flexible way to create a build system for complex projects with complex dependencies.
The GUI has two stages, a configuration stage and a generation stage. The configuration stage gathers all the information needed to generate a build system, including the location of include files, libraries, and executables. The generation stage takes this config and applies generator expressions to produce a build system that is specific to the environment in which it is run.
The CMake project was first created by Kitware in response to the need for a powerful, cross-platform build environment for the Visible Human Project. It was partially inspired by pcmaker, a program that converted Make files into MS Windows NMake scripts, and by the build system used for ITK. Continued development was fueled by other developers adopting CMake into their own systems, such as the VXL project and GE Corporate R&D for support of ParaView.