From NAMIC Wiki
Revision as of 17:27, 16 March 2010 by Aylward (talk | contribs) (→‎Size of Community)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Home < CmakeSummary


CMake is used to control the software build process using simple platform, compiler and operating system independent configuration files. CMake generates native makefiles and workspaces that can be used in the development environment of your choice. That is, CMake does not attempt to replace standard development tools such as compilers and debuggers, rather it produces build files and other development resources that can benefit from automated generation. Further, once CMake configuration files are created, they can be used to produce developer resources across the many platforms that CMake supports. CMake is quite sophisticated: it is possible to support complex environments requiring system configuration, pre-processor generation, code generation, and template instantiation.

Note that CMake currently supports C/C++ development environments. Limited support is available for Java and FORTRAN environments; CMake provides a generalized architecture to support other programming languages.

Note that CMake is one part of a comprehensive software process consisting of the tools CDash, CTest, and CPack.

Typical Usage

The CMake application is typically downloaded for a particular operating system. CMake can be run in two modes: as GUI-based application or from the command line. Either way, CMake is run in two steps. First, a configuration step to characterize the development environment and allow the user to specify build options and the compiler to use; and second, a generation step to produce the build files (e.g., makefiles or project files). Once the build files are generated, the developer than uses standard tools (e.g., "make") to build their software.


CMake is written in C++. It defines its own language, the CMake configuration language, contained in a simple ASCII text file (i.e., the CMakeLists.txt file) consisting of CMake commands. The form of the CMake commands is "ACTION Arguments". There is also support for conditional constructs.


CMake runs across most combinations of hardware, operating system, and compilers.

Software Dependencies

CMake is written in the C/C++ languages, and requires a C++ compiler to build CMake from source code. Otherwise if downloading CMake, no external software is required.

Documentation, Tutorials and Examples

Online documentaion is available from the CMake web site.

The book Mastering CMake is available for purchase from Kitware or

In addition, ITK and VTK both use CMake to control their build process. Examing the CMakeLists.txt files found in these projects can be instructive for the advanced user.

Revision Control

CMake uses CVS to manage the source code. Instructions for obtaining CMake CVS access are available online. (We strongly recommend that you use the pre-compiled binaries; building CMake from source code is only for the advanced user.)

Size of Community

There are over 250 subscribers to the CMake mailing list.

CMake is typically downloaded over 1,200 times per day.

CDash is hosting over 140 open-source projects. Several of these are some of the most prominent open-source efforts in the world, include KDE, Boost, and CLAPACK.


The CMake Copyright is an open-source, Berkely-style license. It allows unrestricted use, including use in commercial products. (The only exceptions are software modules found in the patented software directory.)