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]
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]
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]
CMake modules for some scientific libraries. [``[BSD2]``][BSD-2-Clause]
CMake modules for common applications related to computer graphics. [``[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 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]
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.
CMake module for downloading an external project's source at configure time.
This is a repository of useful and less than useful CMake recipes.
CMake precompiled headers via custom compiler extension - with reuse support!
Toolchains
CMake toolchain file and other scripts for the Android NDK. [``[BSD3]``][BSD-3-Clause]
Toolchain file and examples using CMake for iOS development. [``[BSD3]``][BSD-3-Clause]
For building and deploying Qt based apps on Android without QtCreator. [``[LICENSE]``](https://github.com/LaurentGomila/qt-android-cmake/blob/master/license.txt)
CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv. [``[ISC]``][ISC]
CMake toolchain for AVR. [``[LICENSE]``](https://github.com/mkleemann/cmake-avr/blob/master/LICENSE)
This is the CMake project settings for the Arduino platform. [``[MPL]``][MPL]
Collection of CMake toolchain files and scripts for cross-platform build and CI testing. [``[BSD2]``][BSD-2-Clause]
For cross-compiling with CMake. They are meant to be mainly used on ArchLinux. ``[NO LICENSE]``
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]
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]``
A collection of as simple as possible, modern CMake projects. [``[MIT]``][MIT]
Boiler plate for C++ projects - tests, CI, coverage, docs. [``[UNLICENSE]``][UNLICENSE]
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]
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]``
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]
Static analysis (linter) for the CMake language (e.g. to enforce modern CMake rules). [``[MIT]``][MIT]