mirror of
https://github.com/onqtam/awesome-cmake.git
synced 2025-12-16 20:17:05 +03:00
19 KiB
19 KiB
Awesome CMake 
A curated list of awesome CMake scripts, modules, examples and others.
Contents
- Articles
- Package Management
- Build Systems
- Modules
- Utility Scripts
- Toolchains
- Tutorials / Examples / Templates
- Other
Articles
- ruslo/CGold - The Hitchhiker’s Guide to the CMake.
[BSD2] - Easy dependency management for C++ with CMake and Git.
- Opt-in header-only libraries with CMake.
- Modern CMake - Modern CMake PDF and samples by creator of cmakepp.
[MIT] - Ultimate Guide to Modern CMake
- Older Modern CMake Modern CMake for C++.
- A list of common CMake antipatterns (from 2013 but still relevant).
Package Management
- ruslo/hunter - Cross-platform package manager for C++ (based on CMake ExternalProject).
[BSD2] - pfultz2/cget - CMake package retrieval. This can be used to download and install CMake packages.
[BOOST] - iauns/cpm - C++ Package Manager based on CMake and Git.
[MIT] - conan-io/conan - Conan C++ Package Manager, implemented in Python and has a CMake integration backend.
[MIT] - floooh/fips - High-level build system/dependency management for distributed, multi-platform C/C++ projects.
[MIT]
Build Systems
- Ninja - Small build system with a focus on speed. It differs from other build systems 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]
Modules
- rpavlik/cmake-modules - 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] - bilke/cmake-modules - This is a collection of additional CMake modules. Most of them are from Ryan Pavlik.
[BOOST] - Eyescale/CMake - Common CMake modules.
[BSD3] - tcbrindle/sdl2-cmake-scripts - CMake scripts for finding the SDL2, SDL2_image and SDL2_ttf libraries and headers.
[BSD2] - nerdvegas/vfxcmake - CMake Find modules for common vfx software, and general CMake utility code.
[LGPL] - jedbrown/cmake-modules - CMake modules for some scientific libraries.
[BSD2] - chadmv/cgcmake - CMake modules for common applications related to computer graphics.
[MIT] - sakra/FindMathematica - CMake module for Mathematica.
[MIT] - KDE/extra-cmake-modules - Extra modules and scripts for CMake.
[BSD3] - julp/FindICU.cmake - CMake module to find International Components for Unicode (ICU) Library.
[BSD2] - justusc/FindTBB - CMake find module for Intel Threading Building Blocks.
[MIT] - hanjianwei/cmake-modules - CMake module collection.
[MIT]
Utility Scripts
These provide a wide range of functionality - from dealing with compiler flags to using tools. Some also contain modules.
- sakra/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++.
[MIT] - onqtam/ucm - For managing compiler/linker flags, collecting sources, precompiled headers, unity builds and others.
[MIT] - toeb/cmakepp - Enhancement Suite for the CMake Build System.
[MIT] - ruslo/sugar - CMake tools and examples: collecting source files, warnings suppression, etc.
[BSD2] - Crascit/DownloadProject - CMake module for downloading an external project's source at configure time.
[MIT] - janelia-flyem/buildem - Modular CMake-based system that leverages ExternalProject to simplify builds.
[LICENSE] - JoakimSoderberg/coveralls-cmake - Coveralls JSON coverage generator and uploader for CMake.
[MIT] - foonathan/compatibility - Improved version of cmake-compile-features.
[LICENSE] - Tronic/cmake-modules - LibFindMacros development repository and other cool CMake stuff.
[LICENSE] - UCL/GreatCMakeCookOff - This is a repository of useful and less than useful CMake recipes.
[MIT] - polysquare/cppcheck-target-cmake - Per-target CPPCheck for CMake.
[MIT] - polysquare/clang-tidy-target-cmake - Add clang-tidy checks to a target using CMake.
[MIT] - polysquare/cmake-unit - Unit testing framework for CMake.
[MIT] - polysquare/cmake-header-language - CMake macro to determine the language of a header file.
[MIT] - polysquare/tooling-cmake-util - Utility and common library for all polysquare CMake tools.
[MIT] - polysquare/iwyu-target-cmake - CMake integration for include-what-you-use.
[MIT] - arsenm/sanitizers-cmake - CMake module to enable sanitizers for binary targets.
[MIT] - larsch/cmake-precompiled-header - Visual Studio and GCC precompiled header macro.
[LICENSE] - nanoant/CMakePCHCompiler - CMake precompiled headers via custom compiler extension - with reuse support!
[MIT] - RWTH-ELP/CMake-codecov - Enables code coverage and generates coverage reports with CMake targets.
[GPL] - puppetlabs/leatherman - Collection of C++ and CMake utility libraries.
[APACHE2]
Toolchains
- dockcross/dockcross - Cross compiling toolchains in Docker images.
[MIT] - taka-no-me/android-cmake - CMake toolchain file and other scripts for the Android NDK.
[BSD3] - cristeab/ios-cmake - Toolchain file and examples using CMake for iOS development.
[BSD3] - LaurentGomila/qt-android-cmake - For building and deploying Qt based apps on Android without QtCreator.
[LICENSE] - lachs0r/mingw-w64-cmake - CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv.
[ISC] - mkleemann/cmake-avr - CMake toolchain for AVR.
[LICENSE] - francoiscampbell/arduino-cmake - This is the CMake project settings for the Arduino platform.
[MPL] - ruslo/polly - Collection of CMake toolchain files and scripts for cross-platform build and CI testing.
[BSD2] - mosra/toolchains - For crosscompiling with CMake. They are meant to be mainly used on ArchLinux.
[NO LICENSE] - staticlibs/cmake - Collection of CMake toolchain files, mostly for static linking.
[APACHE2]
Tutorials / Examples / Templates
- cginternals/cmake-init - Template for reliable, cross-platform C++ project setup using CMake.
[LICENSE] - Akagi201/learning-cmake - This is a simple CMake practice project which contains some different scenarios.
[GPL2] - skebanga/cmake_test - Small example project using CMake.
[NO LICENSE] - forexample/android-cmake - Examples of using ruslo/hunter package manager for an Android application.
[BSD2] - forexample/hunter-simple - Example of downloading/installing dependencies using ruslo/hunter package manager.
[BSD2] - ruslo/weather - 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] - forexample/package-example - Config mode of find_package (examples for this Stack Overflow question).
[NO LICENSE] - OutOfOrder/CMakeTemplates - Set of initial CMake templates that I use for every game port I work on.
[NO LICENSE] - krux02/minimal_cmake_example - Minimal CMake example, that covers dependencies and packaging.
[CC0-1.0] - bast/cmake-example - Example project which demonstrates various CMake features.
[BSD3] - ttroy50/cmake-examples - Useful CMake examples in a tutorial format.
[MIT] - district10/cmake-templates - Some CMake Templates. Qt, Boost, OpenCV, C++11, etc.
[MIT] - Barthelemy/CppProjectTemplate - Basic, but working, C++ project using CMake, boost and Doxygen.
[MIT] - euler0/mini-cmake-qt - Minimal CMake template for Qt 5 projects.
[LICENSE] - cognitivewaves/CMake-VisualStudio-Example - CMake example for Visual Studio developers - blog post.
[NO LICENSE] - NewProggie/Cpp-Project-Template - C++ bootstrap project template including CMake build system.
[MIT] - cmake-basis/BASIS - CMake BASIS makes it easy to create sharable software and libraries that work together.
[BSD2] - ArthurSonzogni/OpenGL_CMake_Skeleton - A ready to use CMake skeleton using GLFW, Glew and glm.
[MIT] - JoakimSoderberg/coveralls-cmake-example - Example project for coveralls-cmake.
[NO LICENSE] - kartikkumar/cppbase - Template for a simple CMake-based C++ project.
[MIT] - maxbader/Arduino-CMake-Template - Starting point for Arduino development using CMake.
[NO LICENSE] - fletcher/c-template - Boilerplate to set up a c project, include CuTest, cmake build setup.
[MIT] - duckie/cpp_project_template - Simple template to start quickly a C++ project managed by CMake.
[NO LICENSE]
Other
- coderefinery/autocmake - 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] - kmorel/UseLATEX - Collection of CMake macros to simplify building LaTeX files.
[BSD3] - python-cmake-buildsystem/python-cmake-buildsystem - Replacement buildsystem for CPython.
[APACHE2] - scikit-build/scikit-build - Improved build system generator for CPython C extensions.
[MIT] - jesperes/protobuf-cmake - CMake build support for Google Protobufs.
[BSD3] - cjntaylor/node-cmake - CMake-based build system for node.js native modules.
[ISC] - Lindydancer/cmake-font-lock - Advanced syntax coloring support for CMake scripts inside Emacs.
[GPL] - ObKo/stm32-cmake - Used to develop applications for the STM32 - ST's ARM Cortex-M0(3,4,7) MCUs.
[NO LICENSE] - rastersoft/autovala - Program that automatically generates CMake configuration files for your Vala project.
[GPL] - ros/catkin - CMake-based build system that is used to build all packages in Robot Operating System (ROS).
[BSD3] - jlblancoc/suitesparse-metis-for-windows - CMake scripts for painless usage of SuiteSparse+METIS.
[BSD3] - thewtex/cython-cmake-example - Utilities and example for using CMake to build Cython modules.
[LICENSE] - bjornblissing/osg-3rdparty-cmake - CMake scripts for building OpenSceneGraph third party libraries.
[NO LICENSE] - dcarp/cmake-d - CMake for D2.
[MIT] - h4tr3d/cmakeprojectmanager2 - Enhanced CMake Project Manager plugin for Qt Creator.
[NO LICENSE] - robotology/ycm - Extra CMake Modules for Yet Another Robot Platform and friends.
[BSD2] - richq/cmake-lint - Check for coding style issues in CMake files. cmakelint requires Python.
[APACHE2] - kbenzie/git-cmake-format - Integrate clang-format into your CMake project hosted in a git repository.
[LICENSE] - nemequ/configure-cmake - configure-cmake is an autotools-style configure script for CMake-based projects.
[CC0-1.0] - wjakob/tbb - Threading Building Blocks with CMake build.
[NO LICENSE] - snikulov/sqlite.cmake.build - CMake script for sqlite amalgamation.
[NO LICENSE] - polysquare/cmake-ast - Python module to reduce a CMake file to an AST.
[MIT]
Contribute
Your contributions are highly welcome (first see CONTRIBUTING.md).
For more awesome lists, see awesome.
License
This is released under the Creative Commons Attribution 4.0 International License (CC BY 4.0).