Skip to content
A curated list of awesome CMake resources, scripts, modules, examples and others.
Branch: master
Clone or download

Latest commit

Latest commit d109be8 May 21, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CONTRIBUTING.md removed the github user part of the names of projects - based on comm… Oct 7, 2016
LICENSE Initial commit! Sep 8, 2016
NonModernCMake.md Update NonModernCMake.md May 21, 2020
README.md Update README.md May 21, 2020
cmake-logo.svg tiny rework - based on comments in this pull request - sindresorhus/a… Oct 7, 2016

README.md

Awesome CMake Awesome

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.

Contents

Community

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

Package Management / Build Systems

  • 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]

Modules

Utility Scripts

These provide a wide range of functionality - from dealing with compiler flags to using tools. Some also contain modules.

Toolchains

Examples / Templates

Other

License

This is released under the Creative Commons Attribution 4.0 International License (CC BY 4.0).

You can’t perform that action at this time.