返回排行榜

onqtam/awesome-cmake

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

cmakecmake-resourcescmake-scriptscmake-modulescmake-toolchainscmake-examplesawesome-listawesomelist
Star 增长趋势
Star
5.4k
Forks
489
周增长
Issues
4
2k4k
2016年9月2019年12月2023年4月2026年7月
README

Awesome CMake Awesome

A curated list of awesome CMake scripts, modules, examples and others

Your contributions are highly welcome (first see CONTRIBUTING.md).

There is another file NonModernCMake.md with other links worth taking a look, but they use obsolete practices which are considered non-modern - like not using target_*-based dependency management - see #16 and #42 for more details.

Contents

Community

Resources

  • Latest Documentation
  • FAQ
  • Wiki
  • Webinars
  • Web Book - CGold: The Hitchhiker’s Guide to the CMake. [BSD2]
  • Modern CMake - Modern CMake PDF and samples by the creator of cmakepp. [MIT]
  • 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).
  • 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.
  • 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]
  • Lecture - More Modern CMake (slides & examples)- by Deniz Bahadir, Meeting C++ 2018.
  • Lecture - Oh No! More Modern CMake (slides)- 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). [BSD2]
  • cget - 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 - C++ Package Manager based on CMake and Git. [MIT]
  • conan - Conan C++ Package Manager, implemented in Python and has a CMake integration backend. [MIT]
  • fips - High-level build system/dependency management for distributed, multi-platform C/C++ projects. [MIT]
  • 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. [APACHE2]
  • vcpkg - A tool to acquire and build C++ open source libraries. Uses CMake internally as a build script language. [MIT]
  • pmm - PMM is a module for CMake that manages... package managers. [MIT]
  • cpm - A setup-free CMake + git dependency manager. [MIT]
  • FetchDependency - Configuration-time retrieval, configuration and building of dependencies. [MIT]

Modules

Utility Scripts

These provide a wide range of functionality - from dealing with compiler flags to using tools. Some also contain modules.

Toolchains

Examples / Templates

Other

License

This is released under the Creative Commons Attribution 4.0 International License (CC BY 4.0).

相关仓库
microsoft/vcpkg

C++ Library Manager for Windows, Linux, and MacOS

CMakeMIT Licensevcpkgvisual-studio
27.3k7.6k
Qv2ray/Qv2ray

:star: Linux / Windows / macOS 跨平台 V2Ray 客户端 | 支持 VMess / VLESS / SSR / Trojan / Trojan-Go / NaiveProxy / HTTP / HTTPS / SOCKS5 | 使用 C++ / Qt 开发 | 可拓展插件式设计 :star:

C++GNU General Public License v3.0v2rayssr
qv2ray.net
16.9k3.2k
OpenRCT2/OpenRCT2

An open source re-implementation of RollerCoaster Tycoon 2 🎢

C++GNU General Public License v3.0c-plus-plusgame
openrct2.io
16k1.9k
SFTtech/openage

Clone of the Age of Empires II engine 🚀

PythonPyPIOthergameengine
openage.dev
14.3k1.3k
ttroy50/cmake-examples

Useful CMake Examples

CMakeMIT Licensecmakecpp
ttroy50.github.io/cmake-examples
13.1k2.5k
xmake-io/xmake

🔥 A cross-platform build utility based on Lua

LuaApache License 2.0luabuild-tool
xmake.io
12.1k947
monero-project/monero

Monero: the secure, private, untraceable cryptocurrency

C++Otherc-plus-plusmonero
getmonero.org
10.7k3.5k
conan-io/conan

Conan - The open-source C and C++ package manager

PythonPyPIMIT Licensepackage-managercpp
conan.io
9.5k1.1k
mumble-voip/mumble

Mumble is an open-source, low-latency, high quality voice chat software.

C++Othervoicechatvoip
mumble.info
8.1k1.4k
vcmi/vcmi

Open-source engine for Heroes of Might and Magic III

C++GNU General Public License v2.0c-plus-pluscmake
vcmi.eu
5.7k640
TheLartians/ModernCppStarter

🚀 Kick-start your C++! A template for modern C++ projects using CMake, CI, code coverage, clang-format, reproducible dependency management and much more.

CMakeThe Unlicensecppcmake
thelartians.github.io/ModernCppStarter
5.4k492
Librum-Reader/Librum

The Librum client application

C++GNU General Public License v3.0cmakecpp
librumreader.com
5.3k188