# kitware/cmake

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/kitware-cmake).**

7,968 stars · 2,681 forks · C · BSD-3-Clause

## Links

- GitHub: https://github.com/Kitware/CMake
- Homepage: https://gitlab.kitware.com/cmake/cmake
- awesome-repositories: https://awesome-repositories.com/repository/kitware-cmake.md

## Description

CMake is a cross-platform build system generator and build automation tool. It is used to define build requirements and dependencies for C and C++ source code, managing the compilation and linking process across different operating systems.

The project functions by generating platform-specific build files and scripts from a single configuration. This allows for the standardization of how software is compiled and packaged for compilers and development tools across various environments.

The tool covers C++ project configuration and native application compilation for desktop and embedded systems. It provides cross-platform build automation to ensure consistent results when turning source code into executable binary files.

## Tags

### Development Tools & Productivity

- [Platform-Specific Build File Generation](https://awesome-repositories.com/f/development-tools-productivity/project-file-generators/build-configuration-file-generators/platform-specific-build-file-generation.md) — Translates high-level project descriptions into platform-specific build files like Makefiles or Visual Studio projects.
- [Cross-Platform Build Systems](https://awesome-repositories.com/f/development-tools-productivity/build-automation-engines/cross-platform-build-systems.md) — Automates the compilation process across multiple operating systems and hardware architectures from a single configuration.
- [Build Automation Systems](https://awesome-repositories.com/f/development-tools-productivity/build-automation-systems.md) — Automates the compilation, linking, and packaging of source code into executable artifacts across diverse environments.
- [Build File Generators](https://awesome-repositories.com/f/development-tools-productivity/build-file-generators.md) — Transforms abstract project configurations into platform-specific makefiles or IDE project files.
- [Configurations](https://awesome-repositories.com/f/development-tools-productivity/project-bootstrapping-tools/c-project-templates/configurations.md) — Provides tools to define complex build targets and dependency requirements specifically for C++ projects.
- [Project Configuration Tools](https://awesome-repositories.com/f/development-tools-productivity/project-configuration-tools.md) — Defines build requirements and dependencies for C and C++ source code to ensure consistent results.
- [Platform Build File Generators](https://awesome-repositories.com/f/development-tools-productivity/project-file-generators/build-configuration-file-generators/platform-build-file-generators.md) — Generates platform-native build files such as Makefiles and project files from a single configuration. ([source](https://github.com/kitware/cmake#readme))
- [Native Binary Toolchains](https://awesome-repositories.com/f/development-tools-productivity/build-tooling/build-orchestration-logic/build-orchestration-configuration/build-automation-systems/build-systems/binary-compilation-toolchains/native-binary-toolchains.md) — Orchestrates toolchains that compile source code into native binaries for desktop and embedded systems.

### Programming Languages & Runtimes

- [Domain Specific Languages](https://awesome-repositories.com/f/programming-languages-runtimes/domain-specific-languages.md) — Employs a custom interpreted language to define target dependencies, compiler flags, and system requirements.
- [Build Configuration Passes](https://awesome-repositories.com/f/programming-languages-runtimes/multi-pass-compiler-pipelines/build-configuration-passes.md) — Implements a multi-stage process that separates initial system detection from the final generation of build scripts.

### Software Engineering & Architecture

- [Dependency Graph Resolution](https://awesome-repositories.com/f/software-engineering-architecture/dependency-graph-resolution.md) — Models targets and requirements as a directed graph to determine the optimal compilation order.
- [File-Based Persistence](https://awesome-repositories.com/f/software-engineering-architecture/workflow-persistence/state-persistence/file-based-persistence.md) — Uses a persistent cache file to store system properties and user variables, avoiding redundant expensive probes.

### Part of an Awesome List

- [Development Tools](https://awesome-repositories.com/f/awesome-lists/devtools/development-tools.md) — General-purpose build system with robust support for framework projects.
