A curated list of awesome CMake scripts, modules, examples and others
Your contributions are highly welcome (first see CONTRIBUTING.md).
There is another file NonModernCMake.md
with other links worth taking a look, but they use obsolete practices which are considered non-modern - like not using target_*
-based dependency management - see #16
and #42
for more details.
- Community
- Resources
- Package Management / Build Systems
- Modules
- Utility Scripts
- Toolchains
- Examples / Templates
- Other
- Latest Documentation
- FAQ
- Wiki
- Webinars
- Web Book - CGold: The Hitchhiker’s Guide to the CMake.
[BSD2]
- Modern CMake - Modern CMake PDF and samples by the creator of cmakepp.
[MIT]
- 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).
- Articles - A series on CMake - by Martin Hořeňovský
- 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.
[CC0-1.0]
- Lecture - More Modern CMake (slides & examples)- by Deniz Bahadir, Meeting C++ 2018.
- Lecture - Oh No! More Modern CMake (slides)- 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.
- hunter - Cross-platform package manager for C++ (based on CMake ExternalProject).
[BSD2]
- cget - CMake package retrieval. This can be used to download and install CMake packages.
[BOOST]
- cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14.
[APACHE2]
- cpm - C++ Package Manager based on CMake and Git.
[MIT]
- conan - Conan C++ Package Manager, implemented in Python and has a CMake integration backend.
[MIT]
- fips - High-level build system/dependency management for distributed, multi-platform C/C++ projects.
[MIT]
- 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.
[APACHE2]
- vcpkg - A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language.
[MIT]
- pmm - PMM is a module for CMake that manages... package managers.
[MIT]
- cpm - A setup-free CMake + git dependency manager.
[MIT]
- cmake-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]
- cmake-modules - This is a collection of additional CMake modules. Most of them are from Ryan Pavlik.
[BOOST]
- CMake - Eyescale's common CMake modules.
[BSD3]
- cmake-modules - CMake modules for some scientific libraries.
[BSD2]
- cgcmake - CMake modules for common applications related to computer graphics.
[MIT]
- FindMathematica - CMake module for Mathematica.
[MIT]
- extra-cmake-modules - KDE's extra modules and scripts for CMake.
[BSD3]
- FindICU.cmake - CMake module to find International Components for Unicode (ICU) Library.
[BSD2]
- FindTBB - CMake find module for Intel Threading Building Blocks.
[MIT]
- FindWiX - CMake module for building Windows Installer packages with WiX toolset.
[BSD3]
- FindIDL - CMake module for building IDL files with MIDL and generating CLR DLL using Tlbimp.
[MIT]
- cmake-modules - hanjianwei's CMake module collection.
[MIT]
- YCM - Extra CMake Modules for Yet Another Robot Pl