Track Awesome Cmake Updates Weekly
A curated list of awesome CMake resources, scripts, modules and examples.
🏠 Home · 🔍 Search · 🔥 Feed · 📮 Subscribe · ❤️ Sponsor · 😺 onqtam/awesome-cmake · ⭐ 4.4K · 🏷️ Programming Languages
May 16 - May 22, 2022
Other
- version-from-git (⭐0) - Bake git information into your binary.
[MIT]
Mar 28 - Apr 03, 2022
Modules
- Oranges (⭐1) - Ben Vining's library of CMake modules and toolchains
[GPL]
Oct 19 - Oct 25, 2020
Toolchains
- toolchains (⭐77) - For cross-compiling with CMake. They are meant to be mainly used on ArchLinux.
[NO LICENSE]
Jun 15 - Jun 21, 2020
Examples / Templates
- ModernCppStarter (⭐2.9k) - A template for modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management, tests using doctest (⭐4.3k) and much more.
[UNLICENSE]
May 25 - May 31, 2020
Community
Apr 13 - Apr 19, 2020
Resources
- Tutorial - Modern CMake tutorials part1: CMake basics
Apr 06 - Apr 12, 2020
Toolchains
- Arduino-CMake-Toolchain (⭐106) - CMake toolchain for all official and 3rd party Arduino platforms.
[MIT]
Mar 30 - Apr 05, 2020
Resources
- Tutorial (⭐23) - Tutorial and Example on How to Properly Use Modern CMake.
Mar 16 - Mar 22, 2020
Resources
- Article - A list of common CMake antipatterns (from 2013 but still relevant).
Feb 17 - Feb 23, 2020
Other
- cmake-maven-plugin (⭐59) - CMake integration for Maven builds.
[APACHE2]
Jan 06 - Jan 12, 2020
Resources
- Lecture - Oh No! More Modern CMake (slides (⭐155))- by Deniz Bahadir, Meeting C++ 2019.
Dec 16 - Dec 22, 2019
Other
- cmake-language-server (⭐183) - CMake Language Server Protocol Implementation.
[MIT]
Aug 19 - Aug 25, 2019
Modules
- FindIDL (⭐16) - CMake module for building IDL files with MIDL and generating CLR DLL using Tlbimp.
[MIT]
Aug 12 - Aug 18, 2019
Package Management / Build Systems
Modules
- CMakeCM (⭐1) - CMake Community Modules.
[NO LICENSE]
May 27 - Jun 02, 2019
Utility Scripts
- CMakeCooking - Flexible development environments for CMake projects with external dependencies
.
[APACHE2]
May 20 - May 26, 2019
Package Management / Build Systems
- cpm (⭐1.4k) - A setup-free CMake + git dependency manager.
[MIT]
Apr 15 - Apr 21, 2019
Modules
- Metabench (⭐161) - CMake module for compile-time microbenchmarks.
[BOOST]
Examples / Templates
- cpp-project (⭐496) - Boiler plate for C++ projects - tests, CI, coverage, docs.
[UNLICENSE]
Apr 08 - Apr 14, 2019
Resources
- Lecture - More Modern CMake (slides & examples (⭐155))- by Deniz Bahadir, Meeting C++ 2018.
Mar 25 - Mar 31, 2019
Utility Scripts
- ixm (⭐107) - Make CMake less painful when trying to write Modern Flexible CMake.
[MIT]
Mar 18 - Mar 24, 2019
Examples / Templates
- cmake-examples (⭐977) - A collection of as simple as possible, modern CMake projects.
[MIT]
Mar 04 - Mar 10, 2019
Resources
- Article - Modifying the default CMake build types/flags, toolchains and patches - Oh my! - by Cristian Adam.
Jan 14 - Jan 20, 2019
Examples / Templates
- how-to-export-cpp-library (⭐292) - 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]
Nov 19 - Nov 25, 2018
Examples / Templates
- pitchfork (⭐771) - A set of conventions for native C and C++ projects.
[MIT]
Other
Oct 01 - Oct 07, 2018
Other
- cmake_check (⭐20) - Static analysis (linter) for the CMake language (e.g. to enforce modern CMake rules).
[MIT]
Sep 24 - Sep 30, 2018
Modules
- FindWiX (⭐11) - CMake module for building Windows Installer packages with WiX toolset.
[BSD3]
Examples / Templates
- cpp-template (⭐47) - A template C++ repository, using CMake and Catch.
[NO LICENSE]
Aug 13 - Aug 19, 2018
Resources
- Web Book (⭐487) - CGold: The Hitchhiker’s Guide to the CMake.
[BSD2]
- 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 - 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 (⭐59) - 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]
Jun 25 - Jul 01, 2018
Modules
- YCM (⭐43) - Extra CMake Modules for Yet Another Robot Platform (⭐442) and friends.
[BSD3]
Jun 11 - Jun 17, 2018
Examples / Templates
- cmake-cookbook (⭐1.9k) - A huge CMake cookbook full of recipes.
[MIT]
Jun 04 - Jun 10, 2018
Examples / Templates
- cmake_snippets (⭐48) - Short copy-pasteable CMake snippets.
[BSD3]
May 14 - May 20, 2018
Examples / Templates
- cmake_templates (⭐114) - Templates for creating C++ libraries and executables (including conan).
[NO LICENSE]
Apr 23 - Apr 29, 2018
Package Management / Build Systems
- vcpkg (⭐17k) - A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language.
[MIT]
Other
- cmake-checks-cache (⭐60) - CMake checks cache helper modules.
[MIT]
Apr 16 - Apr 22, 2018
Examples / Templates
- cpp14-project-template (⭐62) - A C++14 template with CI, tests, code coverage, docs and static analysis integration.
[CC0-1.0]
Apr 09 - Apr 15, 2018
Examples / Templates
- CMakeInstallExample (⭐28) - Installation example for a C++ project (Windows) with Cmake.
[NO LICENSE]
Feb 19 - Feb 25, 2018
Examples / Templates
- modern-cmake-sample (⭐581) - Best practices and proper usage of CMake by using targets.
[NO LICENSE]
Feb 05 - Feb 11, 2018
Examples / Templates
- cpp-boilerplate (⭐271) - Template that aims to be a reference for modern CMake and CI.
[MIT]
Jun 05 - Jun 11, 2017
Utility Scripts
- cmake-get (⭐59) - Get dependencies in config or script mode.
[NO LICENSE]
Apr 17 - Apr 23, 2017
Package Management / Build Systems
Oct 24 - Oct 30, 2016
Other
- osg-3rdparty-cmake (⭐154) - CMake scripts for building OpenSceneGraph third party libraries.
[MIXED LICENSE]
Oct 10 - Oct 16, 2016
Community
Resources
- Modern CMake (⭐210) - Modern CMake PDF and samples by the creator of cmakepp (⭐399).
[MIT]
Oct 03 - Oct 09, 2016
Community
Package Management / Build Systems
- hunter (⭐1.9k) - Cross-platform package manager for C++ (based on CMake ExternalProject).
[BSD2]
- cget (⭐415) - CMake package retrieval. This can be used to download and install CMake packages.
[BOOST]
- cpm (⭐716) - C++ Package Manager based on CMake and Git.
[MIT]
- conan (⭐6.3k) - Conan C++ Package Manager, implemented in Python and has a CMake integration backend.
[MIT]
- fips (⭐421) - High-level build system/dependency management for distributed, multi-platform C/C++ projects.
[MIT]
- Ninja (⭐8.6k) - 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]
Modules
- cmake-modules (⭐873) - 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 (⭐440) - This is a collection of additional CMake modules. Most of them are from Ryan Pavlik.
[BOOST]
- CMake (⭐144) - Eyescale's common CMake modules.
[BSD3]
- cmake-modules (⭐80) - CMake modules for some scientific libraries.
[BSD2]
- cgcmake (⭐114) - CMake modules for common applications related to computer graphics.
[MIT]
- FindMathematica (⭐50) - CMake module for Mathematica.
[MIT]
- extra-cmake-modules (⭐101) - KDE's extra modules and scripts for CMake.
[BSD3]
- FindICU.cmake (⭐28) - CMake module to find International Components for Unicode (ICU) Library.
[BSD2]
- FindTBB (⭐82) - CMake find module for Intel Threading Building Blocks.
[MIT]
- cmake-modules (⭐30) - hanjianwei's CMake module collection.
[MIT]
Utility Scripts
- cotire (⭐1.3k) - 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++.
[MIT]
- ucm (⭐193) - For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others.
[MIT]
- cmakepp (⭐399) - Enhancement Suite for the CMake Build System.
[MIT]
- sugar (⭐99) - CMake tools and examples: collecting source files, warnings suppression, etc.
[BSD2]
- DownloadProject (⭐430) - CMake module for downloading an external project's source at configure time.
[MIT]
- buildem (⭐27) - Modular CMake-based system that leverages ExternalProject to simplify builds.
[LICENSE]
- coveralls-cmake (⭐82) - Coveralls JSON coverage generator and uploader for CMake.
[MIT]
- compatibility (⭐72) - Improved version of cmake-compile-features.
[LICENSE]
- cmake-modules (⭐41) - LibFindMacros development repository and other cool CMake stuff.
[LICENSE]
- GreatCMakeCookOff (⭐37) - This is a repository of useful and less than useful CMake recipes.
[MIT]
- cppcheck-target-cmake (⭐17) - Per-target CPPCheck for CMake.
[MIT]
- clang-tidy-target-cmake (⭐16) - Add clang-tidy checks to a target using CMake.
[MIT]
- cmake-unit (⭐35) - Unit testing framework for CMake.
[MIT]
- cmake-header-language (⭐4) - CMake macro to determine the language of a header file.
[MIT]
- tooling-cmake-util (⭐3) - Utility and common library for all polysquare CMake tools.
[MIT]
- iwyu-target-cmake (⭐8) - CMake integration for include-what-you-use.
[MIT]
- sanitizers-cmake (⭐288) - CMake module to enable sanitizers for binary targets.
[MIT]
- cmake-precompiled-header (⭐156) - Visual Studio and GCC precompiled header macro.
[LICENSE]
- CMakePCHCompiler (⭐104) - CMake precompiled headers via custom compiler extension - with reuse support!
[MIT]
- CMake-codecov (⭐81) - Enables code coverage and generates coverage reports with CMake targets.
[GPL]
Toolchains
- dockcross (⭐2.6k) - Cross compiling toolchains in Docker images.
[MIT]
- android-cmake (⭐1.2k) - CMake toolchain file and other scripts for the Android NDK.
[BSD3]
- ios-cmake (⭐305) - Toolchain file and examples using CMake for iOS development.
[BSD3]
- qt-android-cmake (⭐228) - For building and deploying Qt based apps on Android without QtCreator.
[LICENSE]
- mingw-w64-cmake - CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv.
[ISC]
- cmake-avr (⭐161) - CMake toolchain for AVR.
[LICENSE]
- arduino-cmake (⭐57) - This is the CMake project settings for the Arduino platform.
[MPL]
- polly (⭐829) - Collection of CMake toolchain files and scripts for cross-platform build and CI testing.
[BSD2]
- cmake (⭐8) - Collection of CMake toolchain files, mostly for static linking.
[APACHE2]
Examples / Templates
- cmake-init (⭐802) - Template for reliable, cross-platform C++ project setup using CMake.
[LICENSE]
- android-cmake (⭐33) - Examples of using ruslo/hunter (⭐1.9k) package manager for an Android application.
[BSD2]
- hunter-simple (⭐45) - Example of downloading/installing dependencies using ruslo/hunter (⭐1.9k) package manager.
[BSD2]
- package-example (⭐363) - Config mode of find_package (examples for this Stack Overflow question).
[NO LICENSE]
- minimal_cmake_example (⭐156) - Minimal CMake example, that covers dependencies and packaging.
[CC0-1.0]
- cmake-example (⭐142) - Example project which demonstrates various CMake features.
[BSD3]
- cmake-examples (⭐9.3k) - Useful CMake examples in a tutorial format.
[MIT]
- mini-cmake-qt (⭐180) - Minimal CMake template for Qt 5 projects.
[LICENSE]
- BASIS (⭐40) - CMake BASIS makes it easy to create sharable software and libraries that work together.
[BSD2]
Other
- autocmake (⭐37) - 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]
- scikit-build (⭐359) - Improved build system generator for CPython C extensions.
[MIT]
- node-cmake (⭐76) - CMake-based build system for node.js native modules.
[ISC]
- cmake-font-lock (⭐39) - Advanced syntax coloring support for CMake scripts inside Emacs.
[GPL]
- autovala (⭐108) - Program that automatically generates CMake configuration files for your Vala project.
[GPL]
- catkin (⭐276) - CMake-based build system that is used to build all packages in Robot Operating System (ROS).
[BSD3]
- suitesparse-metis-for-windows (⭐392) - CMake scripts for painless usage of SuiteSparse+METIS.
[BSD3]
- cmake-d (⭐56) - CMake for D2.
[MIT]
- cmakeprojectmanager2 (⭐70) - Enhanced CMake Project Manager plugin for Qt Creator.
[NO LICENSE]
- cmake-lint (⭐98) - Check for coding style issues in CMake files. cmakelint requires Python.
[APACHE2]
- git-cmake-format (⭐48) - Integrate clang-format into your CMake project hosted in a git repository.
[LICENSE]
- configure-cmake (⭐82) - configure-cmake is an autotools-style configure script for CMake-based projects.
[CC0-1.0]
- cmake-ast (⭐29) - Python module to reduce a CMake file to an AST.
[MIT]