by the Sphinx documentation generator. Modules and tools CMake ships with numerous modules and tools. These facilitate work such as finding dependencies (both built-in and external, e.g. modules), testing the toolchain environment and executables, packaging releases ( module and command), and managing dependencies on external projects ( module): ctest — is used for target testing commands specified by CMakeLists.txt ccmake and cmake-gui — tweaks and updates configuration variables intended for the native build system cpack — helps to package software CPack CPack is a packaging system for software distributions. It is tightly integrated with CMake but can function without it. It can be used to generate: Linux RPM, deb, and gzip packages (for both binaries and source code). NSIS files (for Microsoft Windows). macOS packages. Adoption CMake has been very widely adopted among commercial, open source, and academic software projects. A few notable users include Android NDK, Netflix, Inria, MySQL, Boost (C++ libraries), KeePassXC, KDE, KiCAD, FreeCAD, Webkit, Blender, Biicode, ReactOS, Apache QPid, the ATLAS experiment, and Second Life. Examples Hello world The following source code files demonstrate how to build a simple hello world program written in C++ by using CMake. // hello.cpp #include <iostream> int main() { std::cout << "Hello, world!\n"; } # CMakeLists.txt cmake_minimum_required(VERSION 3.5) project(HelloWorld CXX) add_executable(hello hello.cpp) Shell commands to run CMake on a Linux system (to be entered in the directory that contains the two files above): cmake -B build . # Configure the build directory. cmake --build build # Build the program in the build directory. ./build/hello # Run the program (outputs "Hello, world!") See also configure script Make Monorepo Qmake References External links CMake Online Documentation CMake Tutorial C++Now 2017: Daniel Pfeifer "Effective CMake" on YouTube 2000 software Build automation Compiling tools Software that uses Qt Software using the BSD license