awesome-cmake
by onqtam
A curated list of awesome CMake resources, scripts, modules and examples.
AI summary
CMake resource hub
A curated collection of CMake resources, scripts, modules, and examples for building and managing C++ projects.
- stars
- 5.1K
- forks
- 487
- watching
- 193
- awesome lists
- 7
- entries
- 143
What's in the list
143 links in 10 sections, with live GitHub stats.activeno commit in 2y
Community
Resources
Web Book
CGold: The Hitchhiker’s to the CMake
Modern CMake
Modern CMake and samples by the creator of
- Tutorial
Modern CMake tutorials part1: CMake basics
- Article
Easily supporting CMake install and find_package()
- Article
Easy dependency management for C++ with CMake and Git
- Article
Opt-in header-only libraries with CMake
- Article
Ultimate Guide to Modern CMake
- Article
A list of common CMake antipatterns (from 2013 but still relevant)
- Article
How to Build a CMake-Based Project
- Article
Learn CMake's Scripting Language in 15 Minutes
- Article
The architecture of CMake
- Lecture
Effective CMake - by Daniel Pfeifer, C++Now 2017
- Article
Building Cross-Platform CUDA Applications with CMake
Tutorial
A step-by-step guide for understanding CMake
- Article + Lecture
Embracing Modern CMake - by Stephen Kelly
- Lecture
Modern CMake for Modular Design - by Mathieu Ropert, CppCon 2017
- Article
It's Time To Do CMake Right (one of the best articles about CMake)
Resources / Articles
Resources
- Lecture
Introduction to CMake - by Florent Castelli, C++ Sweden 2018
- Article
Some nice and accurate CMake tips
- Article
Modern CMake for Library Developers
- Article
Effective Modern CMake: a great summary of most good practices - by Manuel Binna
- Book
Professional CMake: A Practical Guide (paid)
- Book
Effective CMake: Practical Advice to Write Better CMake (not fully written yet)
- Web Book
An Introduction to Modern CMake
- YouTube Series
How to CMake Good
- Lecture
More Modern CMake ( )- by Deniz Bahadir, Meeting C++ 2018
- Lecture
Oh No! More Modern CMake ( )- by Deniz Bahadir, Meeting C++ 2019
- Article
Modifying the default CMake build types/flags, toolchains and patches - Oh my! - by Cristian Adam
Tutorial
Tutorial and Example on How to Properly Use Modern CMake
Package Management / Build Systems
hunter
Cross-platform package manager for C++ (based on CMake ExternalProject)
cget
CMake package retrieval. This can be used to download and install CMake packages
- cppan
C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14
cpm
C++ Package Manager based on CMake and Git
conan
Conan C++ Package Manager, implemented in Python and has a CMake integration backend
fips
High-level build system/dependency management for distributed, multi-platform C/C++ projects
Ninja
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
vcpkg
A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language
pmm
PMM is a module for CMake that manages... package managers
cpm
A setup-free CMake + git dependency manager
Modules
cmake-modules
'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
cmake-modules
This is a collection of additional CMake modules. Most of them are from Ryan Pavlik
CMake
's common CMake modules
cmake-modules
CMake modules for some scientific libraries
cgcmake
CMake modules for common applications related to computer graphics
FindMathematica
CMake module for Mathematica
extra-cmake-modules
's extra modules and scripts for CMake
FindICU.cmake
CMake module to find International Components for Unicode (ICU) Library
FindTBB
CMake find module for Intel Threading Building Blocks
FindWiX
CMake module for building packages with
FindIDL
CMake module for building files with MIDL and generating CLR DLL using
cmake-modules
's CMake module collection
YCM
Extra CMake Modules for and friends
CMakeCM
CMake Community Modules
Metabench
CMake module for compile-time microbenchmarks
- Oranges
's library of CMake modules and toolchains
Utility Scripts
cotire
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++
ucm
For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others
cmakepp
Enhancement Suite for the CMake Build System
sugar
CMake tools and examples: collecting source files, warnings suppression, etc
DownloadProject
CMake module for downloading an external project's source at configure time
buildem
Modular CMake-based system that leverages ExternalProject to simplify builds
coveralls-cmake
Coveralls JSON coverage generator and uploader for CMake
compatibility
Improved version of cmake-compile-features
cmake-modules
LibFindMacros development repository and other cool CMake stuff
GreatCMakeCookOff
This is a repository of useful and less than useful CMake recipes
cppcheck-target-cmake
Per-target CPPCheck for CMake
clang-tidy-target-cmake
Add clang-tidy checks to a target using CMake
cmake-unit
Unit testing framework for CMake
cmake-header-language
CMake macro to determine the language of a header file
tooling-cmake-util
Utility and common library for all polysquare CMake tools
iwyu-target-cmake
CMake integration for include-what-you-use
sanitizers-cmake
CMake module to enable sanitizers for binary targets
cmake-precompiled-header
Visual Studio and GCC precompiled header macro
CMakePCHCompiler
CMake precompiled headers via custom compiler extension - with reuse support!
CMake-codecov
Enables code coverage and generates coverage reports with CMake targets
cmake-get
Get dependencies in config or script mode
ixm
Make CMake less painful when trying to write Modern Flexible CMake
- CMakeCooking
Flexible development environments for CMake projects with external dependencies
Toolchains
dockcross
Cross compiling toolchains in Docker images
android-cmake
CMake toolchain file and other scripts for the Android NDK
ios-cmake
Toolchain file and examples using CMake for iOS development
qt-android-cmake
For building and deploying Qt based apps on Android without QtCreator
- mingw-w64-cmake
CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv
cmake-avr
CMake toolchain for AVR
arduino-cmake
This is the CMake project settings for the Arduino platform
polly
Collection of CMake toolchain files and scripts for cross-platform build and CI testing
toolchains
For cross-compiling with CMake. They are meant to be mainly used on ArchLinux
cmake
Collection of CMake toolchain files, mostly for static linking
Arduino-CMake-Toolchain
CMake toolchain for all official and 3rd party Arduino platforms
Examples / Templates
cmake-init
Template for reliable, cross-platform C++ project setup using CMake
android-cmake
Examples of using package manager for an Android application
hunter-simple
Example of downloading/installing dependencies using package manager
package-example
Config mode of find_package (examples for Stack Overflow question)
minimal_cmake_example
Minimal CMake example, that covers dependencies and packaging
cmake-example
Example project which demonstrates various CMake features
cmake-examples
Useful CMake examples in a tutorial format
mini-cmake-qt
Minimal CMake template for Qt 5 projects
BASIS
CMake makes it easy to create sharable software and libraries that work together
cpp-boilerplate
Template that aims to be a reference for modern CMake and CI
how-to-export-cpp-library
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
modern-cmake-sample
Best practices and proper usage of CMake by using targets
CMakeInstallExample
Installation example for a C++ project (Windows) with Cmake
cmake_templates
Templates for creating C++ libraries and executables (including conan)
cmake_snippets
Short copy-pasteable CMake snippets
cmake-cookbook
A huge CMake cookbook full of recipes
cpp-template
A template C++ repository, using CMake and Catch
pitchfork
A set of conventions for native C and C++ projects
cmake-examples
A collection of as simple as possible, modern CMake projects
cpp-project
Boiler plate for C++ projects - tests, CI, coverage, docs
ModernCppStarter
A template for modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management, tests using and much more
SeeMake
A feature-packed, ready-to-use CMake template with testing, static and dynamic checks, coverage reports, and more
Other
autocmake
Using a autocmake.yml file 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
- UseLATEX
Collection of CMake macros to simplify building LaTeX files
scikit-build
Improved build system generator for CPython C extensions
node-cmake
CMake-based build system for node.js native modules
cmake-font-lock
Advanced syntax coloring support for CMake scripts inside Emacs
autovala
Program that automatically generates CMake configuration files for your Vala project
catkin
CMake-based build system that is used to build all packages in Robot Operating System (ROS)
suitesparse-metis-for-windows
CMake scripts for painless usage of SuiteSparse+METIS
osg-3rdparty-cmake
CMake scripts for building OpenSceneGraph third party libraries
cmake-d
CMake for D2
cmakeprojectmanager2
Enhanced CMake Project Manager plugin for Qt Creator
cmake-lint
Check for coding style issues in CMake files. cmakelint requires Python
git-cmake-format
Integrate clang-format into your CMake project hosted in a git repository
configure-cmake
configure-cmake is an autotools-style configure script for CMake-based projects
cmake-ast
Python module to reduce a CMake file to an AST
cmake-checks-cache
CMake checks cache helper modules
cmake_check
Static analysis (linter) for the CMake language (e.g. to enforce modern CMake rules)
cmake-language-server
CMake Language Server Protocol Implementation
cmake-maven-plugin
CMake integration for Maven builds
version-from-git
Bake git information into your binary
Nothing in this list matches your filter.
Featured in 7 awesome lists
Each link jumps to the spot where the list mentions awesome-cmake.