awesome-cmake
CMake resource hub
A curated collection of CMake resources, scripts, modules, and examples for building and managing C++ projects.
A curated list of awesome CMake resources, scripts, modules and examples.
5k stars
193 watching
487 forks
last commit: about 1 year ago
Linked from 7 awesome lists
awesomeawesome-listcmakecmake-examplescmake-modulescmake-resourcescmake-scriptscmake-toolchainslist
Awesome CMake / Community | |||
| #cmake on Freenode | |||
| /r/cmake on Reddit | |||
| /r/cpp on Reddit | |||
| Official Discourse Forum | |||
| Stack Overflow | |||
Awesome CMake / Resources | |||
| Latest Documentation | |||
| FAQ | |||
| Wiki | |||
| Webinars | |||
| Web Book | 527 | over 2 years ago | CGold: The Hitchhiker’s to the CMake |
| Modern CMake | 233 | about 9 years ago | 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 | 62 | almost 4 years ago | 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) | ||
Awesome CMake / Resources / Articles | |||
| Basic CMake usage | |||
| Basic CMake, part 2: libraries | |||
Awesome CMake / 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 | 33 | over 5 years ago | Tutorial and Example on How to Properly Use Modern CMake |
Awesome CMake / Package Management / Build Systems | |||
| hunter | 1,870 | almost 6 years ago | Cross-platform package manager for C++ (based on CMake ExternalProject) |
| cget | 454 | over 1 year ago | 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 | 747 | about 4 years ago | C++ Package Manager based on CMake and Git |
| conan | 8,370 | 11 months ago | Conan C++ Package Manager, implemented in Python and has a CMake integration backend |
| fips | 473 | over 1 year ago | High-level build system/dependency management for distributed, multi-platform C/C++ projects |
| Ninja | 11,348 | 11 months ago | 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 | 23,503 | 11 months ago | A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language |
| pmm | 15 | over 4 years ago | PMM is a module for CMake that manages... package managers |
| cpm | 3,099 | about 1 year ago | A setup-free CMake + git dependency manager |
Awesome CMake / Modules | |||
| cmake-modules | 1,022 | over 1 year ago | '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 | 549 | almost 2 years ago | This is a collection of additional CMake modules. Most of them are from Ryan Pavlik |
| CMake | 156 | almost 2 years ago | 's common CMake modules |
| cmake-modules | 87 | about 5 years ago | CMake modules for some scientific libraries |
| cgcmake | 129 | over 4 years ago | CMake modules for common applications related to computer graphics |
| FindMathematica | 60 | almost 2 years ago | CMake module for Mathematica |
| extra-cmake-modules | 137 | 11 months ago | 's extra modules and scripts for CMake |
| FindICU.cmake | 30 | almost 9 years ago | CMake module to find International Components for Unicode (ICU) Library |
| FindTBB | 90 | over 7 years ago | CMake find module for Intel Threading Building Blocks |
| FindWiX | 18 | about 3 years ago | CMake module for building packages with |
| FindIDL | 27 | about 1 year ago | CMake module for building files with MIDL and generating CLR DLL using |
| cmake-modules | 30 | over 10 years ago | 's CMake module collection |
| YCM | 54 | 11 months ago | Extra CMake Modules for and friends |
| CMakeCM | 2 | over 3 years ago | CMake Community Modules |
| Metabench | 183 | over 4 years ago | CMake module for compile-time microbenchmarks |
| Oranges | 's library of CMake modules and toolchains | ||
Awesome CMake / Utility Scripts | |||
| cotire | 1,301 | almost 6 years ago | 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 | 210 | over 2 years ago | For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others |
| cmakepp | 437 | almost 4 years ago | Enhancement Suite for the CMake Build System |
| sugar | 97 | over 5 years ago | CMake tools and examples: collecting source files, warnings suppression, etc |
| DownloadProject | 442 | about 2 years ago | CMake module for downloading an external project's source at configure time |
| buildem | 27 | over 3 years ago | Modular CMake-based system that leverages ExternalProject to simplify builds |
| coveralls-cmake | 86 | over 5 years ago | Coveralls JSON coverage generator and uploader for CMake |
| compatibility | 74 | over 8 years ago | Improved version of cmake-compile-features |
| cmake-modules | 45 | about 3 years ago | LibFindMacros development repository and other cool CMake stuff |
| GreatCMakeCookOff | 42 | over 2 years ago | This is a repository of useful and less than useful CMake recipes |
| cppcheck-target-cmake | 18 | over 9 years ago | Per-target CPPCheck for CMake |
| clang-tidy-target-cmake | 16 | over 9 years ago | Add clang-tidy checks to a target using CMake |
| cmake-unit | 36 | over 8 years ago | Unit testing framework for CMake |
| cmake-header-language | 4 | over 9 years ago | CMake macro to determine the language of a header file |
| tooling-cmake-util | 3 | over 9 years ago | Utility and common library for all polysquare CMake tools |
| iwyu-target-cmake | 10 | over 9 years ago | CMake integration for include-what-you-use |
| sanitizers-cmake | 378 | about 1 year ago | CMake module to enable sanitizers for binary targets |
| cmake-precompiled-header | 159 | about 6 years ago | Visual Studio and GCC precompiled header macro |
| CMakePCHCompiler | 104 | about 6 years ago | CMake precompiled headers via custom compiler extension - with reuse support! |
| CMake-codecov | 89 | over 1 year ago | Enables code coverage and generates coverage reports with CMake targets |
| cmake-get | 63 | almost 7 years ago | Get dependencies in config or script mode |
| ixm | 106 | about 3 years ago | Make CMake less painful when trying to write Modern Flexible CMake |
| CMakeCooking | Flexible development environments for CMake projects with external dependencies | ||
Awesome CMake / Toolchains | |||
| dockcross | 3,331 | about 1 year ago | Cross compiling toolchains in Docker images |
| android-cmake | 1,222 | over 7 years ago | CMake toolchain file and other scripts for the Android NDK |
| ios-cmake | 314 | about 5 years ago | Toolchain file and examples using CMake for iOS development |
| qt-android-cmake | 243 | over 3 years ago | 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 | 175 | over 3 years ago | CMake toolchain for AVR |
| arduino-cmake | 61 | almost 5 years ago | This is the CMake project settings for the Arduino platform |
| polly | 861 | over 4 years ago | Collection of CMake toolchain files and scripts for cross-platform build and CI testing |
| toolchains | 90 | 11 months ago | For cross-compiling with CMake. They are meant to be mainly used on ArchLinux |
| cmake | 9 | over 6 years ago | Collection of CMake toolchain files, mostly for static linking |
| Arduino-CMake-Toolchain | 141 | over 2 years ago | CMake toolchain for all official and 3rd party Arduino platforms |
Awesome CMake / Examples / Templates | |||
| cmake-init | 912 | about 2 years ago | Template for reliable, cross-platform C++ project setup using CMake |
| android-cmake | 34 | almost 9 years ago | Examples of using package manager for an Android application |
| hunter-simple | 49 | over 6 years ago | Example of downloading/installing dependencies using package manager |
| package-example | 398 | over 4 years ago | Config mode of find_package (examples for Stack Overflow question) |
| minimal_cmake_example | 191 | almost 7 years ago | Minimal CMake example, that covers dependencies and packaging |
| cmake-example | 142 | almost 5 years ago | Example project which demonstrates various CMake features |
| cmake-examples | 12,492 | over 1 year ago | Useful CMake examples in a tutorial format |
| mini-cmake-qt | 212 | almost 2 years ago | Minimal CMake template for Qt 5 projects |
| BASIS | 49 | over 4 years ago | CMake makes it easy to create sharable software and libraries that work together |
| cpp-boilerplate | 313 | over 1 year ago | Template that aims to be a reference for modern CMake and CI |
| how-to-export-cpp-library | 365 | almost 5 years ago | 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 | 669 | over 4 years ago | Best practices and proper usage of CMake by using targets |
| CMakeInstallExample | 36 | about 4 years ago | Installation example for a C++ project (Windows) with Cmake |
| cpp14-project-template | 65 | about 7 years ago | A C++14 template with CI, tests, code coverage, docs and static analysis integration |
| cmake_templates | 128 | over 3 years ago | Templates for creating C++ libraries and executables (including conan) |
| cmake_snippets | 52 | over 6 years ago | Short copy-pasteable CMake snippets |
| cmake-cookbook | 2,736 | over 4 years ago | A huge CMake cookbook full of recipes |
| cpp-template | 51 | over 3 years ago | A template C++ repository, using CMake and Catch |
| pitchfork | 1,123 | over 1 year ago | A set of conventions for native C and C++ projects |
| cmake-examples | 1,177 | about 1 year ago | A collection of as simple as possible, modern CMake projects |
| cpp-project | 607 | about 2 years ago | Boiler plate for C++ projects - tests, CI, coverage, docs |
| ModernCppStarter | 4,526 | about 1 year ago | A template for modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management, tests using and much more |
| SeeMake | 5 | about 1 year ago | A feature-packed, ready-to-use CMake template with testing, static and dynamic checks, coverage reports, and more |
Awesome CMake / Other | |||
| autocmake | 42 | almost 3 years ago | 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 | 494 | 11 months ago | Improved build system generator for CPython C extensions |
| node-cmake | 78 | over 4 years ago | CMake-based build system for node.js native modules |
| cmake-font-lock | 45 | over 1 year ago | Advanced syntax coloring support for CMake scripts inside Emacs |
| autovala | 105 | over 7 years ago | Program that automatically generates CMake configuration files for your Vala project |
| catkin | 323 | 12 months ago | CMake-based build system that is used to build all packages in Robot Operating System (ROS) |
| suitesparse-metis-for-windows | 450 | over 1 year ago | CMake scripts for painless usage of SuiteSparse+METIS |
| osg-3rdparty-cmake | 182 | almost 3 years ago | CMake scripts for building OpenSceneGraph third party libraries |
| cmake-d | 66 | over 2 years ago | CMake for D2 |
| cmakeprojectmanager2 | 74 | almost 2 years ago | Enhanced CMake Project Manager plugin for Qt Creator |
| cmake-lint | 102 | over 6 years ago | Check for coding style issues in CMake files. cmakelint requires Python |
| git-cmake-format | 58 | about 8 years ago | Integrate clang-format into your CMake project hosted in a git repository |
| configure-cmake | 85 | over 8 years ago | configure-cmake is an autotools-style configure script for CMake-based projects |
| cmake-ast | 30 | over 3 years ago | Python module to reduce a CMake file to an AST |
| cmake-checks-cache | 79 | over 3 years ago | CMake checks cache helper modules |
| cmake_check | 20 | over 5 years ago | Static analysis (linter) for the CMake language (e.g. to enforce modern CMake rules) |
| cmake-language-server | 344 | about 1 year ago | CMake Language Server Protocol Implementation |
| cmake-maven-plugin | 76 | about 1 year ago | CMake integration for Maven builds |
| version-from-git | 4 | over 3 years ago | Bake git information into your binary |