CPU

CMake – build system generator

CMake is an open-source, cross-platform family of tools designed to build, test and package software.

CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.

The suite of CMake tools were created by Kitware in response to the need for a powerful, cross-platform build environment for open-source projects such as ITK and VTK.

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.

Website: cmake.org
Support: GitLab Code Repository
Developer: Kitware, Inc. and Contributors
License: New BSD

CMake is written in C and C++. Learn C with our recommended free books and free tutorials. Learn C++ with our recommended free books and free tutorials.


Related Software

Build Systems
CargoRust package manager
gulpToolkit to automate & enhance your workflow
BazelBuild and test your multi-language, multi-platform projects
Apache MavenBuild automation tool used primarily for Java projects
GradleBuild tool with a focus on build automation and support for multi-language
MesonNext-generation build system
CMakeFamily of tools designed to build, test and package software
Buck2Encourages the creation of small, reusable modules
LeiningenAutomating Clojure projects
GruntJavaScript Task Runner
NinjaSmall build system with a focus on speed
xmakeCross-platform build utility based on Lua
SConsSoftware construction tool
PantsScalable build system for monorepos
PHingBuild system based on Apache Ant
Rakemake-like build utility for Ruby
Apache AntTool for automating software build processes
CabalCommon Architecture for Building Applications and Libraries

Read our verdict in the software roundup.

Alternatives to make
CMakeBuild system generator
SConsSoftware construction tool
MavenBuild automation tool used primarily for Java projects
PremakeSimple build configuration
NinjaSmall build system with a focus on speed
justSave and run project-specific commands
pdpmakePublic domain implementation of make which follows the POSIX standard

Best Free and Open Source Software Explore our comprehensive directory of recommended free and open source software. Our carefully curated collection spans every major software category.

This directory is part of our ongoing series of informative articles for Linux enthusiasts. It features hundreds of detailed reviews, along with open source alternatives to proprietary solutions from major corporations such as Google, Microsoft, Apple, Adobe, IBM, Cisco, Oracle, and Autodesk.

You’ll also find interesting projects to try, hardware coverage, free programming books and tutorials, and much more.

Discovered a useful open source Linux program that we haven’t covered yet? Let us know by completing this form.
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments