Awesome Lists

awesome-cmake

by onqtam

awesome listpushed about 2 years ago

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

AI summary

CMake resource hub

A curated collection of CMake resources, scripts, modules, and examples for building and managing C++ projects.

stars
5.1K
forks
487
watching
193
awesome lists
7
entries
143
View on GitHub

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/onqtam/awesome-cmake/links.svg)](https://awesome.facts.dev/awesome/onqtam/awesome-cmake)
HTML
<a href="https://awesome.facts.dev/awesome/onqtam/awesome-cmake"><img src="https://awesome.facts.dev/shield/onqtam/awesome-cmake/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/onqtam/awesome-cmake/links.svg

What's in the list

143 links in 10 sections, with live GitHub stats.activeno commit in 2y

Community

Resources

  • Web Book

    CGold: The Hitchhiker’s to the CMake

  • Modern CMake

    Modern CMake and samples by the creator of

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

Resources / Articles

Resources

  • 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

  • Lecture

    More Modern CMake ( )- by Deniz Bahadir, Meeting C++ 2018

  • Lecture

    Oh No! More Modern CMake ( )- 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)

  • cget

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

  • cppan

    C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14

  • cpm

    C++ Package Manager based on CMake and Git

  • conan

    Conan C++ Package Manager, implemented in Python and has a CMake integration backend

  • fips

    High-level build system/dependency management for distributed, multi-platform C/C++ projects

  • 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

  • vcpkg

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

  • pmm

    PMM is a module for CMake that manages... package managers

  • cpm

    A setup-free CMake + git dependency manager

Modules

  • cmake-modules

    '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

  • cmake-modules

    This is a collection of additional CMake modules. Most of them are from Ryan Pavlik

  • CMake

    's common CMake modules

  • cmake-modules

    CMake modules for some scientific libraries

  • cgcmake

    CMake modules for common applications related to computer graphics

  • FindMathematica

    CMake module for Mathematica

  • extra-cmake-modules

    's extra modules and scripts for CMake

  • FindICU.cmake

    CMake module to find International Components for Unicode (ICU) Library

  • FindTBB

    CMake find module for Intel Threading Building Blocks

  • FindWiX

    CMake module for building packages with

  • FindIDL

    CMake module for building files with MIDL and generating CLR DLL using

  • cmake-modules

    's CMake module collection

  • YCM

    Extra CMake Modules for and friends

  • CMakeCM

    CMake Community Modules

  • Metabench

    CMake module for compile-time microbenchmarks

  • Oranges

    's library of CMake modules and toolchains

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++

  • ucm

    For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others

  • cmakepp

    Enhancement Suite for the CMake Build System

  • sugar

    CMake tools and examples: collecting source files, warnings suppression, etc

  • DownloadProject

    CMake module for downloading an external project's source at configure time

  • buildem

    Modular CMake-based system that leverages ExternalProject to simplify builds

  • coveralls-cmake

    Coveralls JSON coverage generator and uploader for CMake

  • compatibility

    Improved version of cmake-compile-features

  • cmake-modules

    LibFindMacros development repository and other cool CMake stuff

  • GreatCMakeCookOff

    This is a repository of useful and less than useful CMake recipes

  • cppcheck-target-cmake

    Per-target CPPCheck for CMake

  • clang-tidy-target-cmake

    Add clang-tidy checks to a target using CMake

  • cmake-unit

    Unit testing framework for CMake

  • cmake-header-language

    CMake macro to determine the language of a header file

  • tooling-cmake-util

    Utility and common library for all polysquare CMake tools

  • iwyu-target-cmake

    CMake integration for include-what-you-use

  • sanitizers-cmake

    CMake module to enable sanitizers for binary targets

  • cmake-precompiled-header

    Visual Studio and GCC precompiled header macro

  • CMakePCHCompiler

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

  • CMake-codecov

    Enables code coverage and generates coverage reports with CMake targets

  • cmake-get

    Get dependencies in config or script mode

  • ixm

    Make CMake less painful when trying to write Modern Flexible CMake

  • CMakeCooking

    Flexible development environments for CMake projects with external dependencies

Toolchains

  • dockcross

    Cross compiling toolchains in Docker images

  • android-cmake

    CMake toolchain file and other scripts for the Android NDK

  • ios-cmake

    Toolchain file and examples using CMake for iOS development

  • qt-android-cmake

    For building and deploying Qt based apps on Android without QtCreator

  • mingw-w64-cmake

    CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv

  • cmake-avr

    CMake toolchain for AVR

  • arduino-cmake

    This is the CMake project settings for the Arduino platform

  • polly

    Collection of CMake toolchain files and scripts for cross-platform build and CI testing

  • toolchains

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

  • cmake

    Collection of CMake toolchain files, mostly for static linking

  • Arduino-CMake-Toolchain

    CMake toolchain for all official and 3rd party Arduino platforms

Examples / Templates

  • cmake-init

    Template for reliable, cross-platform C++ project setup using CMake

  • android-cmake

    Examples of using package manager for an Android application

  • hunter-simple

    Example of downloading/installing dependencies using package manager

  • package-example

    Config mode of find_package (examples for Stack Overflow question)

  • minimal_cmake_example

    Minimal CMake example, that covers dependencies and packaging

  • cmake-example

    Example project which demonstrates various CMake features

  • cmake-examples

    Useful CMake examples in a tutorial format

  • mini-cmake-qt

    Minimal CMake template for Qt 5 projects

  • BASIS

    CMake makes it easy to create sharable software and libraries that work together

  • cpp-boilerplate

    Template that aims to be a reference for modern CMake and CI

  • 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

  • modern-cmake-sample

    Best practices and proper usage of CMake by using targets

  • CMakeInstallExample

    Installation example for a C++ project (Windows) with Cmake

  • cpp14-project-template

    A C++14 template with CI, tests, code coverage, docs and static analysis integration

  • cmake_templates

    Templates for creating C++ libraries and executables (including conan)

  • cmake_snippets

    Short copy-pasteable CMake snippets

  • cmake-cookbook

    A huge CMake cookbook full of recipes

  • cpp-template

    A template C++ repository, using CMake and Catch

  • pitchfork

    A set of conventions for native C and C++ projects

  • cmake-examples

    A collection of as simple as possible, modern CMake projects

  • cpp-project

    Boiler plate for C++ projects - tests, CI, coverage, docs

  • ModernCppStarter

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

  • SeeMake

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

Other

  • autocmake

    Using a autocmake.yml file 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

  • UseLATEX

    Collection of CMake macros to simplify building LaTeX files

  • scikit-build

    Improved build system generator for CPython C extensions

  • node-cmake

    CMake-based build system for node.js native modules

  • cmake-font-lock

    Advanced syntax coloring support for CMake scripts inside Emacs

  • autovala

    Program that automatically generates CMake configuration files for your Vala project

  • catkin

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

  • suitesparse-metis-for-windows

    CMake scripts for painless usage of SuiteSparse+METIS

  • osg-3rdparty-cmake

    CMake scripts for building OpenSceneGraph third party libraries

  • cmake-d

    CMake for D2

  • cmakeprojectmanager2

    Enhanced CMake Project Manager plugin for Qt Creator

  • cmake-lint

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

  • git-cmake-format

    Integrate clang-format into your CMake project hosted in a git repository

  • configure-cmake

    configure-cmake is an autotools-style configure script for CMake-based projects

  • cmake-ast

    Python module to reduce a CMake file to an AST

  • cmake-checks-cache

    CMake checks cache helper modules

  • cmake_check

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

  • cmake-language-server

    CMake Language Server Protocol Implementation

  • cmake-maven-plugin

    CMake integration for Maven builds

  • version-from-git

    Bake git information into your binary

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.