Courses & TutorialsProgramming

Awesome CMake – Massive Collection of Resources

A curated list of awesome CMake scripts, modules, examples and others

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

  • 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

Other

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button