Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

awesome-cmake

A curated list of awesome CMake resources, scripts, modules and examples.
https://github.com/onqtam/awesome-cmake

Last synced: 2 days ago
JSON representation

  • Community

  • Resources

    • Latest Documentation
    • FAQ
    • Wiki
    • Webinars
    • 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).
    • Basic CMake usage
    • Basic CMake, part 2: libraries
    • Lecture - Introduction to CMake - by Florent Castelli, C++ Sweden 2018.
    • 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]```][CC0-1.0]
    • Lecture - More Modern CMake ([slides & examples](https://github.com/Bagira80/More-Modern-CMake))- by Deniz Bahadir, Meeting C++ 2018.
    • Lecture - Oh No! More Modern CMake ([slides](https://github.com/Bagira80/More-Modern-CMake/raw/master/OhNoMoreModernCMake.pdf))- by Deniz Bahadir, Meeting C++ 2019.
    • Article - Modifying the default CMake build types/flags, toolchains and patches - Oh my! - by Cristian Adam.
    • Article - Easily supporting CMake install and find_package().
    • Article - Easy dependency management for C++ with CMake and Git.
    • Article - How to Build a CMake-Based Project.
    • Article - Learn CMake's Scripting Language in 15 Minutes.
    • Article - The architecture of CMake.
    • Article - Building Cross-Platform CUDA Applications with CMake.
    • Article - Some nice and accurate CMake tips.
    • Article - Some nice and accurate CMake tips.
    • Article - A list of common CMake antipatterns (from 2013 but still relevant).
  • Package Management / Build Systems

    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cpm - A setup-free CMake + git dependency manager. [```[MIT]```][MIT]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • vcpkg - A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language. [```[MIT]```][MIT]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
    • cppan - C++ Archive Network - C++ Package Manager based on CMake, implemented in C++14. [```[APACHE2]```][APACHE2]
  • Utility Scripts

    • CMakeCooking - Flexible development environments for CMake projects with external dependencies
    • CMake-codecov - Enables code coverage and generates coverage reports with CMake targets. [```[GPL]```][GPL]
    • ixm - Make CMake less painful when trying to write Modern Flexible CMake. [```[MIT]```][MIT]
  • Toolchains

    • mingw-w64-cmake - CMake-based MinGW-w64 Cross Toolchain - to build Windows binaries of mpv. [```[ISC]```][ISC]
    • cmake - Collection of CMake toolchain files, mostly for static linking. [```[APACHE2]```][APACHE2]
  • Other

    • UseLATEX - Collection of CMake macros to simplify building LaTeX files. [```[BSD3]```][BSD-3-Clause]
    • autocmake - Using a autocmake.yml file [Autocmake](http://autocmake.readthedocs.io/en/latest/) 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]```][BSD-3-Clause]
  • Examples / Templates

    • android-cmake - Examples of using [ruslo/hunter](https://github.com/ruslo/hunter) package manager for an Android application. [```[BSD2]```][BSD-2-Clause]
    • hunter-simple - Example of downloading/installing dependencies using [ruslo/hunter](https://github.com/ruslo/hunter) package manager. [```[BSD2]```][BSD-2-Clause]