Skip to content
83

Awesome CMake

A curated list of awesome CMake resources, scripts, modules and examples.

5.4k stars488 forks149 entriesLast push Aug 13, 2026 (1 month ago)License Other

This page lists names, links and short descriptions. The original list on GitHub is the source and belongs to its authors.

Community

#cmake on Freenode

/r/cmake on Reddit

/r/cpp on Reddit

Discussions, articles, and news about programming in C++.

In 2 lists

Official Discourse Forum

Stack Overflow

Resources

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).

Basic CMake usage

.

Basic CMake, part 2: libraries

.

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.

Package Management / Build Systems

hunter

Cross-platform package manager for C++ (based on CMake ExternalProject). [BSD2]

In 2 lists

cget

CMake package retrieval. This can be used to download and install CMake packages. [BOOST]

In 2 lists

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]

In 3 lists

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]

In 2 lists

vcpkg

A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language. [MIT]

In 3 lists

pmm

PMM is a module for CMake that manages... package managers. [MIT]

cpm

A setup-free CMake + git dependency manager. [MIT]

FetchDependency

Configuration-time retrieval, configuration and building of dependencies. [MIT]

Modules

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]

In 3 lists

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 Platform and friends. [BSD3]

CMakeCM

CMake Community Modules. [NO LICENSE]

Metabench

CMake module for compile-time microbenchmarks. [BOOST]

Oranges

Ben Vining's library of CMake modules and toolchains [GPL]

better.cmake

Collection of modern CMake extensions [[APACHE2]][APACHE-2.0]

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++. [MIT]

ucm

For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others. [MIT]

cmakepp

Enhancement Suite for the CMake Build System. [MIT]

sugar

CMake tools and examples: collecting source files, warnings suppression, etc. [BSD2]

DownloadProject

CMake module for downloading an external project's source at configure time. [MIT]

buildem

Modular CMake-based system that leverages ExternalProject to simplify builds. [LICENSE]

coveralls-cmake

Coveralls JSON coverage generator and uploader for CMake. [MIT]

compatibility

Improved version of cmake-compile-features. [LICENSE]

cmake-modules

LibFindMacros development repository and other cool CMake stuff. [LICENSE]

GreatCMakeCookOff

This is a repository of useful and less than useful CMake recipes. [MIT]

cppcheck-target-cmake

Per-target CPPCheck for CMake. [MIT]

clang-tidy-target-cmake

Add clang-tidy checks to a target using CMake. [MIT]

cmake-unit

Unit testing framework for CMake. [MIT]

cmake-header-language

CMake macro to determine the language of a header file. [MIT]

tooling-cmake-util

Utility and common library for all polysquare CMake tools. [MIT]

iwyu-target-cmake

CMake integration for include-what-you-use. [MIT]

sanitizers-cmake

CMake module to enable sanitizers for binary targets. [MIT]

cmake-precompiled-header

Visual Studio and GCC precompiled header macro. [LICENSE]

CMakePCHCompiler

CMake precompiled headers via custom compiler extension - with reuse support! [MIT]

CMake-codecov

Enables code coverage and generates coverage reports with CMake targets. [GPL]

cmake-get

Get dependencies in config or script mode. [NO LICENSE]

ixm

Make CMake less painful when trying to write Modern Flexible CMake. [MIT]

CMakeCooking

Flexible development environments for CMake projects with external dependencies . [APACHE2]

fetch_paths.cmake

Lightweight utility to simplify file/directory path retrieval in CMake, supporting dynamic searches and flexible output formats. [MIT]

Toolchains

dockcross

Cross compiling toolchains in Docker images. [MIT]

android-cmake

CMake toolchain file and other scripts for the Android NDK. [BSD3]

ios-cmake

Toolchain file and examples using CMake for iOS development. [BSD3]

qt-android-cmake

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

CMake toolchain for AVR. [LICENSE]

arduino-cmake

This is the CMake project settings for the Arduino platform. [MPL]

polly

Collection of CMake toolchain files and scripts for cross-platform build and CI testing. [BSD2]

toolchains

For cross-compiling with CMake. They are meant to be mainly used on ArchLinux. [NO LICENSE]

cmake

Collection of CMake toolchain files, mostly for static linking. [APACHE2]

Arduino-CMake-Toolchain

CMake toolchain for all official and 3rd party Arduino platforms. [MIT]

Examples / Templates

cmake-init

Template for reliable, cross-platform C++ project setup using CMake. [LICENSE]

android-cmake

Examples of using ruslo/hunter package manager for an Android application. [BSD2]

hunter-simple

Example of downloading/installing dependencies using ruslo/hunter package manager. [BSD2]

package-example

Config mode of find_package (examples for this Stack Overflow question). [NO LICENSE]

minimal_cmake_example

Minimal CMake example, that covers dependencies and packaging. [CC0-1.0]

cmake-example

Example project which demonstrates various CMake features. [BSD3]

cmake-examples

Useful CMake examples in a tutorial format. [MIT]

In 2 lists

mini-cmake-qt

Minimal CMake template for Qt 5 projects. [LICENSE]

BASIS

CMake BASIS makes it easy to create sharable software and libraries that work together. [BSD2]

cpp-boilerplate

Template that aims to be a reference for modern CMake and CI. [MIT]

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. [MIT]

modern-cmake-sample

Best practices and proper usage of CMake by using targets. [NO LICENSE]

CMakeInstallExample

Installation example for a C++ project (Windows) with Cmake. [NO LICENSE]

cpp14-project-template

A C++14 template with CI, tests, code coverage, docs and static analysis integration. [CC0-1.0]

cmake_templates

Templates for creating C++ libraries and executables (including conan). [NO LICENSE]

cmake_snippets

Short copy-pasteable CMake snippets. [BSD3]

cmake-cookbook

A huge CMake cookbook full of recipes. [MIT]

In 2 lists

cpp-template

A template C++ repository, using CMake and Catch. [NO LICENSE]

pitchfork

A set of conventions for native C and C++ projects. [MIT]

In 2 lists

cmake-examples

A collection of as simple as possible, modern CMake projects. [MIT]

In 2 lists

cpp-project

Boiler plate for C++ projects - tests, CI, coverage, docs. [UNLICENSE]

ModernCppStarter

A template for modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management, tests using doctest and much more. [UNLICENSE]

In 2 lists

SeeMake

A feature-packed, ready-to-use CMake template with testing, static and dynamic checks, coverage reports, and more. [MIT]

Other

autocmake

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]

UseLATEX

Collection of CMake macros to simplify building LaTeX files. [BSD3]

scikit-build

Improved build system generator for CPython C extensions. [MIT]

node-cmake

CMake-based build system for node.js native modules. [ISC]

cmake-font-lock

Advanced syntax coloring support for CMake scripts inside Emacs. [GPL]

autovala

Program that automatically generates CMake configuration files for your Vala project. [GPL]

catkin

CMake-based build system that is used to build all packages in Robot Operating System (ROS). [BSD3]

suitesparse-metis-for-windows

CMake scripts for painless usage of SuiteSparse+METIS. [BSD3]

osg-3rdparty-cmake

CMake scripts for building OpenSceneGraph third party libraries. [MIXED LICENSE]

cmake-d

CMake for D2. [MIT]

In 2 lists

cmakeprojectmanager2

Enhanced CMake Project Manager plugin for Qt Creator. [NO LICENSE]

cmake-lint

Check for coding style issues in CMake files. cmakelint requires Python. [APACHE2]

git-cmake-format

Integrate clang-format into your CMake project hosted in a git repository. [LICENSE]

cmakefmt

Fast, native CMake formatter written in Rust with format-on-save editor support and a first-party GitHub Action. [MIT]

configure-cmake

configure-cmake is an autotools-style configure script for CMake-based projects. [CC0-1.0]

cmake-ast

Python module to reduce a CMake file to an AST. [MIT]

cmake-checks-cache

CMake checks cache helper modules. [MIT]

cmake_check

Static analysis (linter) for the CMake language (e.g. to enforce modern CMake rules). [MIT]

cmake-language-server

CMake Language Server Protocol Implementation. [MIT]

cmake-xray

Analyze and diagnose CMake-based C++ builds from compile databases and CMake File API data. [MIT]

cmake-maven-plugin

CMake integration for Maven builds. [APACHE2]

version-from-git

Bake git information into your binary. [MIT]

SoCMake

CMake based build system for hardware (ASIC, FPGA) and System-on-Chip build automation. [LGPL]

See category
94

Awesome Rust

rust-unofficial/awesome-rust

A curated list of Rust code and resources.

Fresh★ 60k1833 entriesPushed today
94

Awesome Mac

jaywcjlove/awesome-mac

 This project is dedicated to collecting high-quality macOS software and organizing them systematically by different categories for easy search and use.

Fresh★ 115k1316 entriesPushed today
94

Awesome Python

vinta/awesome-python

Curated Python frameworks, libraries and resources.

Fresh★ 324k504 entriesPushed today
94

Awesome C++

fffaraz/awesome-cpp

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Fresh★ 74k1358 entriesPushed yesterday
94

Awesome Go

avelino/awesome-go

Curated Go frameworks and libraries.

Fresh★ 186k3119 entriesPushed yesterday
94

Awesome PHP

ziadoz/awesome-php

A curated list of amazingly awesome PHP libraries, resources and shiny things.

Fresh★ 33k87 entriesPushed 2 days ago