CMake
Build, test, and package software.
Contents
Package Management / Build Systems
Cross-platform package manager for C++ (based on CMake ExternalProject). [``[BSD2]``][BSD-2-Clause]
CMake package retrieval. This can be used to download and install CMake packages. [``[BOOST]``][BOOST]
C++ Package Manager based on CMake and Git. [``[MIT]``][MIT]
Conan C++ Package Manager, implemented in Python and has a CMake integration backend. [``[MIT]``][MIT]
High-level build system/dependency management for distributed, multi-platform C/C++ projects. [``[MIT]``][MIT]
Build system that differs from others in two major respects: it is designed to have its input files generated by a higher-level build system (like CMake), and it is designed to run builds as fast as possible. [``[APACHE2]``][APACHE2]
A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language. [``[MIT]``][MIT]
PMM is a module for CMake that manages... package managers. [``[MIT]``][MIT]
A setup-free CMake + git dependency manager. [``[MIT]``][MIT]
Configuration-time retrieval, configuration and building of dependencies. [``[MIT]``][MIT]
Modules
Ryan Pavlik's collection of CMake modules. There are a number of find modules, especially for virtual reality and physical simulation, some utility modules, and some patches or workarounds for CMake itself. [``[BOOST]``][BOOST]
This is a collection of additional CMake modules. Most of them are from Ryan Pavlik. [``[BOOST]``][BOOST]
Eyescale's common CMake modules. [``[BSD3]``][BSD-3-Clause]
CMake modules for some scientific libraries. [``[BSD2]``][BSD-2-Clause]
CMake modules for common applications related to computer graphics. [``[MIT]``][MIT]
CMake module for Mathematica. [``[MIT]``][MIT]
KDE's extra modules and scripts for CMake. [``[BSD3]``][BSD-3-Clause]
CMake module to find International Components for Unicode (ICU) Library. [``[BSD2]``][BSD-2-Clause]
CMake find module for Intel Threading Building Blocks. [``[MIT]``][MIT]
CMake module for building Windows Installer packages with WiX toolset. [``[BSD3]``][BSD-3-Clause]
CMake module for building IDL files with MIDL and generating CLR DLL using Tlbimp. [``[MIT]``][MIT]
hanjianwei's CMake module collection. [``[MIT]``][MIT]
Extra CMake Modules for Yet Another Robot Platform and friends. [``[BSD3]``][BSD-3-Clause]
CMake Community Modules. ``[NO LICENSE]``
CMake module for compile-time benchmarks. [``[BOOST]``][BOOST]
Ben Vining's library of CMake modules and toolchains [``[GPL]``][GPL]
Utility Scripts
Cotire (compile time reducer) is a CMake module that speeds up the build process of CMake based build systems by fully automating techniques as precompiled headers and unity builds for C and C++.
For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others.
Enhancement Suite for the CMake Build System.
CMake tools and examples: collecting source files, warnings suppression, etc.
CMake module for downloading an external project's source at configure time.
Modular CMake-based system that leverages ExternalProject to simplify builds.
Coveralls JSON coverage generator and uploader for CMake.
Improved version of cmake-compile-features.
LibFindMacros development repository and other cool CMake stuff.
This is a repository of useful and less than useful CMake recipes.
Per-target CPPCheck for CMake.
Add clang-tidy checks to a target using CMake.
Unit testing framework for CMake.
CMake macro to determine the language of a header file.
Utility and common library for all polysquare CMake tools.
CMake integration for include-what-you-use.
CMake module to enable sanitizers for binary targets.
Visual Studio and GCC precompiled header macro.
CMake precompiled headers via custom compiler extension - with reuse support!
Enables code coverage and generates coverage reports with CMake targets.
Get dependencies in config or script mode.
Make CMake less painful when trying to write Modern Flexible CMake.
Flexible development environments for CMake projects with external dependencies.
Lightweight utility to simplify file/directory path retrieval in CMake, supporting dynamic searches and flexible output formats.
Toolchains
Cross compiling toolchains in Docker images.
CMake toolchain file and other scripts for the Android NDK.
Toolchain file and examples using CMake for iOS development.
For building and deploying Qt based apps on Android without QtCreator.
CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv.
CMake toolchain for AVR.
This is the CMake project settings for the Arduino platform.
Collection of CMake toolchain files and scripts for cross-platform build and CI testing.
For cross-compiling with CMake. They are meant to be mainly used on ArchLinux.
Collection of CMake toolchain files, mostly for static linking.
CMake toolchain for all official and 3rd party Arduino platforms.
Examples / Templates
Template for reliable, cross-platform C++ project setup using CMake. [``[LICENSE]``](https://github.com/cginternals/cmake-init/blob/master/LICENSE)
Examples of using ruslo/hunter package manager for an Android application. [``[BSD2]``][BSD-2-Clause]
Example of downloading/installing dependencies using ruslo/hunter package manager. [``[BSD2]``][BSD-2-Clause]
Config mode of find_package (examples for this Stack Overflow question). ``[NO LICENSE]``
Minimal CMake example, that covers dependencies and packaging. [``[CC0-1.0]``][CC0-1.0]
Example project which demonstrates various CMake features. [``[BSD3]``][BSD-3-Clause]
Useful CMake examples in a tutorial format. [``[MIT]``][MIT]
Minimal CMake template for Qt 5 projects. [``[LICENSE]``](https://github.com/euler0/mini-cmake-qt/blob/master/LICENSE)
CMake BASIS makes it easy to create sharable software and libraries that work together. [``[BSD2]``][BSD-2-Clause]
Template that aims to be a reference for modern CMake and CI. [``[MIT]``][MIT]
An OS-agnostic template project for exporting either shared, static or header-only C++ library, sporting ctest and CI support, written in plain CMake with line-by-line tutorial comments. [``[MIT]``][MIT]
Best practices and proper usage of CMake by using targets. ``[NO LICENSE]``
Installation example for a C++ project (Windows) with Cmake. ``[NO LICENSE]``
A C++14 template with CI, tests, code coverage, docs and static analysis integration. [``[CC0-1.0]``][CC0-1.0]
Templates for creating C++ libraries and executables (including conan). ``[NO LICENSE]``
Short copy-pasteable CMake snippets. [``[BSD3]``][BSD-3-Clause]
A huge CMake cookbook full of recipes. [``[MIT]``][MIT]
A template C++ repository, using CMake and Catch. ``[NO LICENSE]``
A set of conventions for native C and C++ projects. [``[MIT]``][MIT]
A collection of as simple as possible, modern CMake projects. [``[MIT]``][MIT]
Boiler plate for C++ projects - tests, CI, coverage, docs. [``[UNLICENSE]``][UNLICENSE]
A template for modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management, tests using doctest and much more. [``[UNLICENSE]``][UNLICENSE]
A feature-packed, ready-to-use CMake template with testing, static and dynamic checks, coverage reports, and more. [``[MIT]``][MIT]
Other
Using a autocmake.yml file Autocmake composes CMake building blocks into a CMake project and generates CMakeLists.txt as well as a setup script, which serves as a front-end to CMakeLists.txt. [``[BSD3]``][BSD-3-Clause]
Improved build system generator for CPython C extensions. [``[MIT]``][MIT]
CMake-based build system for node.js native modules. [``[ISC]``][ISC]
Advanced syntax coloring support for CMake scripts inside Emacs. [``[GPL]``][GPL]
Program that automatically generates CMake configuration files for your Vala project. [``[GPL]``][GPL]
CMake-based build system that is used to build all packages in Robot Operating System (ROS). [``[BSD3]``][BSD-3-Clause]
CMake scripts for painless usage of SuiteSparse+METIS. [``[BSD3]``][BSD-3-Clause]
CMake scripts for building OpenSceneGraph third party libraries. ``[MIXED LICENSE]``
CMake for D2. [``[MIT]``][MIT]
Enhanced CMake Project Manager plugin for Qt Creator. ``[NO LICENSE]``
Check for coding style issues in CMake files. cmakelint requires Python. [``[APACHE2]``][APACHE2]
Integrate clang-format into your CMake project hosted in a git repository. [``[LICENSE]``](https://github.com/kbenzie/git-cmake-format/blob/master/license.txt)
configure-cmake is an autotools-style configure script for CMake-based projects. [``[CC0-1.0]``][CC0-1.0]
Python module to reduce a CMake file to an AST. [``[MIT]``][MIT]
CMake checks cache helper modules. [``[MIT]``][MIT]
Static analysis (linter) for the CMake language (e.g. to enforce modern CMake rules). [``[MIT]``][MIT]
CMake Language Server Protocol Implementation. [``[MIT]``][MIT]
CMake integration for Maven builds. [``[APACHE2]``][APACHE2]
Bake git information into your binary. [``[MIT]``][MIT]
CMake based build system for hardware (ASIC, FPGA) and System-on-Chip build automation. [``[LGPL]``][LGPL]