CMake is a completely free and open source software project that has been designed from the ground up to act as a build system, a compiler for system configuration, pre-processor generation, template instantiation and code generation under any GNU/Linux operating system. It is a command-line program that runs entirely from a console/terminal environment.
Features at a glance
Key features include support for complex, large build environments, the ability to generate native build files, powerful commands that allow developers to locate include files, executables and libraries, external CMake files that contain standard functionality, interface with testing systems, as well as support for recursive directory traversal with variable inheritance.
Additionally, CMake supports out-of-place and in-place builds, supports conditional builds, supports regular expression expansion and multiple compilation trees from a single source tree. It can be easily extended to add new features, and includes the ability to run external programs.
The program comes with numerous command-line options, organized in two major sections, Options and Generators. Developers will be able to populate the cache by pre-loading scripts, generate cmake cache entries, enable or suppress developer warnings, specify a build system generator and toolset name, as well as to run it in various modes or print various information.
On the other hand, the CMake compiler lets you to generate standard UNIX makefiles, build.ninja files, as well as project files for CodeBlocks, CodeLite, Eclipse, KDevelop, Kate, and Sublime Text 2.
Supported operating systems
Besides GNU/Linux, CMake has been successfully tested under the commercial Microsoft Windows and Mac OS X operating systems. Both 64-bit and 32-bit instruction set architectures are supported at this time.
Under the hood and availability
CMake is written entirely in the C++ programming language, it’s a cross-platform software (see below section for supported operating systems) and it is available for download as a universal sources tarball, as well as pre-built binary packages for the aforementioned OSes.