CMake 2.2.3 review

by on

Welcome to CMake, the cross-platform, open-source make system.

License: Freeware
OS: Windows Vista / 7 / 8 / 10
File size: 3476K
Developer: Kitware
Price: $0.00
Updated: 18 Jan 2006
0 stars award from

Welcome to CMake, the cross-platform, open-source make system. CMake is used to control the software compilation process using simple platform and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.

With CMake it is possible to support complex environments requiring system configuration, pre-processor generation, code generation, and template instantiation.

CMake was developed by Kitware as part of the NLM Insight Segmentation and Registration Toolkit project. The ASCI VIEWS project also provided support in the context of their parallel computation environment. Other sponsors include the Insight, VTK, and VXL open source software communities.

The goals for CMake include the following:

• Develop an open source, cross-platform tool to manage the build process,
• Allow the use of native compilers and systems,
• Simplify the build process,
• Optionally provide a user-interface to manage the build system,
• Create an extensible framework,
• Grow a self-sustaining community of software users and developers.

CMake is designed to support complex directory hierarchies and applications dependent on several libraries. For example, CMake supports projects consisting of multiple toolkits (i.e., libraries), where each toolkit might contain several directories, and the application depends on the toolkits plus additional code. CMake can also handle situations where executables must be built in order to generate code that is then compiled and linked into a final application. Because CMake is open source, and has a simple, extensible design, CMake can be extended as necessary to support new features.

Using CMake is simple. The build process is controlled by creating one or more CMakeLists.txt files in each directory (including subdirectories) that make up a project. Each CMakeLists.txt consists of one or more commands. Each command has the form COMMAND (args...) where COMMAND is the name of the command, and args is a white-space separated list of arguments. CMake provides many pre-defined commands, but if you need to, you can add your own commands. In addition, the advanced user can add other makefile generators for a particular compiler/OS combination. (While Unix and MSVC++ is supported currently, other developers are adding other compiler/OS support.) You may wish to study the examples page to see more details.

Here are some key features of "CMake":
Supports complex, large build environments. CMake has been proven in several large projects.
Generates native build files (e.g., makefiles on Unix; workspaces/projects on MS Visual C++). Therefore standard tools can be used on any platform/compiler configuration.
Has powerful commands include the ability to locate include files, libraries, executables; include external CMake files that encapsulate standard functionality; interfaces to testing systems; supports recursive directory traversal with variable inheritance; can run external programs; supports conditional builds; supports regular expression expansion; and so on.
Supports in-place and out-of-place builds. Multiple compilation trees are possible from a single source tree.
Can be easily extended to add new features.
CMake is open source.
CMake operates with a cache designed to be interfaced with a graphical editor. The cache provides optional interaction to conditionally control the build process.

CMake 2.2.3 search tags