Ranked awesome lists, all in one place
This list is a copy of onqtam/awesome-cmake with ranks
Awesome CMake ★87749
A curated list of awesome CMake scripts, modules, examples and others
Your contributions are highly welcome (first see CONTRIBUTING.md).
Contents
- Community
- Resources
- Package Management / Build Systems
- Modules
- Utility Scripts
- Toolchains
- Examples / Templates
- Other
Community
Resources
- Latest Documentation
- FAQ
- Wiki
- Webinars
- CGold ★114 - The Hitchhiker’s Guide to the CMake.
[BSD2]
- Modern CMake - Modern CMake PDF and samples by the creator of cmakepp ★279 ⏳1Y.
[MIT]
- 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 - CppCon 2017: Mathieu Ropert “Modern CMake for Modular Design”.
- Article - Modern C++ CI (although it uses non-modern CMake like
include_directories()
). - 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
Package Management / Build Systems
- hunter ★1266 - Cross-platform package manager for C++ (based on CMake ExternalProject).
[BSD2]
- cget ★232 - 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 ★637 ⏳1Y - C++ Package Manager based on CMake and Git.
[MIT]
- conan ★1904 - Conan C++ Package Manager, implemented in Python and has a CMake integration backend.
[MIT]
- fips ★199 - High-level build system/dependency management for distributed, multi-platform C/C++ projects.
[MIT]
- Ninja ★3456 - 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 ★3254 - A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language.
[MIT]
Modules
- cmake-modules ★479 - 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 ★157 - This is a collection of additional CMake modules. Most of them are from Ryan Pavlik.
[BOOST]
- CMake ★81 - Eyescale’s common CMake modules.
[BSD3]
- sdl2-cmake-scripts ★127 - CMake scripts for finding the SDL2, SDL2_image and SDL2_ttf libraries and headers.
[BSD2]
- vfxcmake ★75 - CMake Find modules for common vfx software, and general CMake utility code.
[LGPL]
- cmake-modules ★57 - CMake modules for some scientific libraries.
[BSD2]
- cgcmake ★46 - CMake modules for common applications related to computer graphics.
[MIT]
- FindMathematica ★27 - CMake module for Mathematica.
[MIT]
- extra-cmake-modules ★28 - KDE’s extra modules and scripts for CMake.
[BSD3]
- FindICU.cmake ★23 ⏳1Y - CMake module to find International Components for Unicode (ICU) Library.
[BSD2]
- FindTBB ★55 - CMake find module for Intel Threading Building Blocks.
[MIT]
- cmake-modules ★23 ⏳3Y - hanjianwei’s CMake module collection.
[MIT]
- YCM - Extra CMake Modules for Yet Another Robot Platform ★204 and friends.
[BSD3]
Utility Scripts
These provide a wide range of functionality - from dealing with compiler flags to using tools. Some also contain modules.
- cotire ★777 - 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 ★99 ⏳1Y - For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others.
[MIT]
- cmakepp ★279 ⏳1Y - Enhancement Suite for the CMake Build System.
[MIT]
- sugar ★78 - CMake tools and examples: collecting source files, warnings suppression, etc.
[BSD2]
- DownloadProject ★205 ⏳1Y - CMake module for downloading an external project’s source at configure time.
[MIT]
- buildem ★25 ⏳1Y - Modular CMake-based system that leverages ExternalProject to simplify builds.
[LICENSE]
- coveralls-cmake ★66 - Coveralls JSON coverage generator and uploader for CMake.
[MIT]
- compatibility ★60 ⏳1Y - Improved version of cmake-compile-features.
[LICENSE]
- cmake-modules ★27 ⏳2Y - LibFindMacros development repository and other cool CMake stuff.
[LICENSE]
- GreatCMakeCookOff ★22 - This is a repository of useful and less than useful CMake recipes.
[MIT]
- cppcheck-target-cmake ★14 ⏳2Y - Per-target CPPCheck for CMake.
[MIT]
- clang-tidy-target-cmake ★10 ⏳2Y - Add clang-tidy checks to a target using CMake.
[MIT]
- cmake-unit ★27 ⏳1Y - Unit testing framework for CMake.
[MIT]
- cmake-header-language ★2 ⏳2Y - CMake macro to determine the language of a header file.
[MIT]
- tooling-cmake-util ★2 ⏳2Y - Utility and common library for all polysquare CMake tools.
[MIT]
- iwyu-target-cmake ★3 ⏳2Y - CMake integration for include-what-you-use.
[MIT]
- sanitizers-cmake ★100 - CMake module to enable sanitizers for binary targets.
[MIT]
- cmake-precompiled-header ★85 - Visual Studio and GCC precompiled header macro.
[LICENSE]
- CMakePCHCompiler ★40 - CMake precompiled headers via custom compiler extension - with reuse support!
[MIT]
- CMake-codecov - Enables code coverage and generates coverage reports with CMake targets.
[GPL]
- leatherman ★31 - Collection of C++ and CMake utility libraries.
[APACHE2]
- cmake-get ★41 - Get dependencies in config or script mode.
[NO LICENSE]
Toolchains
- dockcross ★617 - Cross compiling toolchains in Docker images.
[MIT]
- android-cmake ★872 - CMake toolchain file and other scripts for the Android NDK.
[BSD3]
- ios-cmake ★207 ⏳1Y - Toolchain file and examples using CMake for iOS development.
[BSD3]
- qt-android-cmake ★85 ⏳1Y - For building and deploying Qt based apps on Android without QtCreator.
[LICENSE]
- mingw-w64-cmake ★72 - CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv.
[ISC]
- cmake-avr ★81 - CMake toolchain for AVR.
[LICENSE]
- arduino-cmake ★32 - This is the CMake project settings for the Arduino platform.
[MPL]
- polly ★423 - Collection of CMake toolchain files and scripts for cross-platform build and CI testing.
[BSD2]
- toolchains ★19 - For crosscompiling with CMake. They are meant to be mainly used on ArchLinux.
[NO LICENSE]
- cmake - Collection of CMake toolchain files, mostly for static linking.
[APACHE2]
Examples / Templates
- cmake-init ★265 - Template for reliable, cross-platform C++ project setup using CMake.
[LICENSE]
- learning-cmake ★607 - This is a simple CMake practice project which contains some different scenarios.
[GPL2]
- cmake_test ★12 - Small example project using CMake.
[NO LICENSE]
- android-cmake - Examples of using ruslo/hunter ★1266 package manager for an Android application.
[BSD2]
- hunter-simple - Example of downloading/installing dependencies using ruslo/hunter ★1266 package manager.
[BSD2]
- weather ★18 ⏳2Y - Example of using Hunter cross-platform package manager for CMake to build application which use Boost, CppNetlib.URI, GTest, JSON Spirit. Platforms: Windows (Visual Studio), Linux, Mac OS X + iOS.
[BSD2]
- package-example ★154 - Config mode of find_package (examples for this Stack Overflow question).
[NO LICENSE]
- CMakeTemplates ★42 ⏳1Y - Set of initial CMake templates that I use for every game port I work on.
[NO LICENSE]
- minimal_cmake_example ★91 - Minimal CMake example, that covers dependencies and packaging.
[CC0-1.0]
- cmake-example ★70 - Example project which demonstrates various CMake features.
[BSD3]
- cmake-examples ★398 - Useful CMake examples in a tutorial format.
[MIT]
- cmake-templates ★178 - Some CMake Templates. Qt, Boost, OpenCV, C++11, etc.
[MIT]
- CppProjectTemplate ★162 ⏳2Y - Basic, but working, C++ project using CMake, boost and Doxygen.
[MIT]
- mini-cmake-qt ★96 ⏳1Y - Minimal CMake template for Qt 5 projects.
[LICENSE]
- CMake-VisualStudio-Example ★58 ⏳1Y - CMake example for Visual Studio developers - blog post.
[NO LICENSE]
- Cpp-Project-Template ★51 ⏳3Y - C++ bootstrap project template including CMake build system.
[MIT]
- BASIS ★16 ⏳1Y - CMake BASIS makes it easy to create sharable software and libraries that work together.
[BSD2]
- OpenGL_CMake_Skeleton ★35 ⏳2Y - A ready to use CMake skeleton using GLFW, Glew and glm.
[MIT]
- coveralls-cmake-example - Example project for coveralls-cmake ★66.
[NO LICENSE]
- cppbase ★87 - Template for a simple CMake-based C++ project.
[MIT]
- Arduino-CMake-Template ★3 - Starting point for Arduino development using CMake.
[NO LICENSE]
- c-template ★33 - Boilerplate to set up a c project, include CuTest, CMake build setup.
[MIT]
- cpp_project_template ★26 - Simple template to start quickly a C++ project managed by CMake.
[MIT]
- cpp-boilerplate ★47 - Template that aims to be a reference for modern CMake and CI.
[MIT]
- ci_helloworld ★142 - A simple example of how to setup a complete CI environment for C and C++.
[MIT]
- how-to-export-cpp-library ★7 - An OS-agnostic C++ library template sporting ctest and CI support, written in plain CMake with line-by-line guiding comments.
[MIT]
- ModernCppCI ★59 ⏳1Y - An example of doing a Modern C++ project with CI (although it uses non-modern CMake like
include_directories()
).[MIT]
- modern-cmake-sample ★77 - Best practices and proper usage of CMake by using targets.
[NO LICENSE]
- CMakeInstallExample ★9 - Installation example for a C++ project (Windows) with Cmake.
[NO LICENSE]
- cpp14-project-template ★10 - A C++14 template with CI, tests, code coverage, docs and static analysis integration.
[CC0-1.0]
- cmake_templates ★38 - Templates for creating C++ libraries and executables (including conan).
[NO LICENSE]
- cmake_snippets ★16 - Short copy-pasteable CMake snippets.
[BSD3]
- cmake-cookbook ★30 - A huge CMake cookbook full of recipes.
[MIT]
Other
- autocmake ★24 - 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 ★125 - Collection of CMake macros to simplify building LaTeX files.
[BSD3]
- python-cmake-buildsystem ★180 - Replacement buildsystem for CPython.
[APACHE2]
- scikit-build ★54 - Improved build system generator for CPython C extensions.
[MIT]
- protobuf-cmake ★26 ⏳2Y - CMake build support for Google Protobufs.
[BSD3]
- node-cmake ★44 - CMake-based build system for node.js native modules.
[ISC]
- cmake-font-lock ★21 ⏳1Y - Advanced syntax coloring support for CMake scripts inside Emacs.
[GPL]
- stm32-cmake ★269 - Used to develop applications for the STM32 - ST’s ARM Cortex-M0(3,4,7) MCUs.
[MIT]
- autovala ★109 - Program that automatically generates CMake configuration files for your Vala project.
[GPL]
- catkin ★137 - CMake-based build system that is used to build all packages in Robot Operating System (ROS).
[BSD3]
- suitesparse-metis-for-windows ★157 - CMake scripts for painless usage of SuiteSparse+METIS.
[BSD3]
- cython-cmake-example ★110 ⏳1Y - Utilities and example for using CMake to build Cython modules.
[LICENSE]
- osg-3rdparty-cmake ★86 - CMake scripts for building OpenSceneGraph third party libraries.
[MIXED LICENSE]
- cmake-d ★33 - CMake for D2.
[MIT]
- cmakeprojectmanager2 ★44 - Enhanced CMake Project Manager plugin for Qt Creator.
[NO LICENSE]
- cmake-lint ★49 ⏳1Y - Check for coding style issues in CMake files. cmakelint requires Python.
[APACHE2]
- git-cmake-format ★26 - Integrate clang-format into your CMake project hosted in a git repository.
[LICENSE]
- configure-cmake ★54 ⏳1Y - configure-cmake is an autotools-style configure script for CMake-based projects.
[CC0-1.0]
- tbb ★68 - Threading Building Blocks with CMake build.
[APACHE2]
- sqlite.cmake.build ★12 ⏳1Y - CMake script for sqlite amalgamation.
[NO LICENSE]
- cmake-ast ★14 - Python module to reduce a CMake file to an AST.
[MIT]
- cmake_format ★110 - Source code formatter for CMakeLists.txt files.
[GPL]
- cmake-checks-cache ★8 - CMake checks cache helper modules.
[MIT]
License
This is released under the Creative Commons Attribution 4.0 International
License (CC BY 4.0)
.
This list is a copy of onqtam/awesome-cmake with ranks