
Flexible project structure ĬMake can locate system-wide and user-specified executables, files, and libraries. Dependency management ĬMake keeps track and recompiles all the upstream dependencies of a given sub-module if its sources are changed. Separate source and build files ensure that removing a build directory will not affect source files and prevents clutter which might confuse version control systems. This enables multiple builds from the same source tree and cross-compilation. One of its major features is the ability to place compiler outputs (such as object files) into a build tree which is located outside of the source tree. The commands add_compile_options, include_directories, link_directories, link_libraries that were at the core of CMake 2 should now be replaced by target-specific commands.įeatures Separate build tree Experts now advise to avoid variables in favor of targets and properties.

It has been described as the beginning of "Modern CMake". Additional features were created when VTK transitioned to CMake for its build environment and for supporting ParaView. Ĭontinued development and improvements were fueled by the incorporation of CMake into developers’ own systems, including the VXL Project, the CABLE features added by Brad King, and GE Corporate R&D for support of DART. system checks and introspection (similar to Autotools): what system could and could not doīecause of these constraints CMake didn't choose to use Tcl (popular at the time) scripting language as its default and instead, developers decided to create a simpler scripting language.to be able to run build-time code generators.capable to produce executable and linkable binary libraries (static and shared).to be able to generate VS Studio IDE input files.depending only on system C++ compiler, meaning no third-party libraries.Historically CMake was conceived with the following major features in mind:

CMake was first implemented in 2000 and further developed in 2001. pcmaker was a C program that converted Make files into MS Windows' NMake counterparts At Kitware, Bill Hoffman blended components of pcmaker with his own ideas, striving to mimic the functionality of Unix configure scripts. It was partially inspired by pcmaker, a predecessor to CMake, which was made by Ken Martin and other developers to support building of the Visualization Toolkit (VTK). The project is funded by the United States National Library of Medicine as part of the Visible Human Project.
#Make vs cmake registration#
History ĬMake development began in 1999, in response to the need for a cross-platform build environment for the Insight Segmentation and Registration Toolkit (ITK).
#Make vs cmake software#
ĬMake is distributed as open-source software under a permissive BSD-3-Clause license. It has minimal dependencies, requiring only a C++ compiler on its own build system.
#Make vs cmake android#
It is used in conjunction with native build environments such as Make, Qt Creator, Ninja, Android Studio, Apple's Xcode, and Microsoft Visual Studio. It supports directory hierarchies and applications that depend on multiple libraries.

CMake is not a build system itself it generates another system's build files. In software development, CMake is cross-platform free and open-source software for build automation, testing, packaging and installation of software by using a compiler-independent method.
