CMake
Awesome CMake ¶
> 精选清单 CMake 脚本、模块、示例和其他
非常欢迎您的贡献(先看 https://github.com/onqtam/awesome-cmake/blob/master/CONTRIBUTING.md).
还有一个文件 https://github.com/onqtam/awesome-cmake/blob/master/NonModernCMake.md
与其他值得一看的链接,但它们使用被认为是非现代的过时做法——比如不使用基于“target_*”的依赖管理——请参阅 #16
和 #42
更多细节.
Community¶
Resources¶
- Latest Documentation
- FAQ
- Wiki
- Webinars
- Web Book - CGold:漫游者 Guide 到 CMake. [
[BSD2]
][BSD-2-Clause] - Modern CMake - 现代 CMake PDF 和创建者的样本 cmakepp . [
[带]
][带] - Tutorial - 现代 CMake 教程第 1 部分:CMake 基础知识
- Article - 轻松支持 CMake 安装和 find_package().
- Article - 使用 CMake 和 Git 轻松管理 C++ 的依赖项.
- Article - 使用 CMake 选择加入仅标头库.
- Article - 现代 CMake 终极指南.
- Article - 常见 CMake 反模式列表(从 2013 年开始,但仍然相关).
- Article - 如何构建基于 CMake 的项目.
- Article - 在 15 分钟内学习 CMake 的脚本语言.
- Article - CMake 的架构.
- Lecture - Effective CMake - 作者 Daniel Pfeifer,C++Now 2017.
- Article - 使用 CMake 构建跨平台 CUDA 应用程序.
- Tutorial - 了解 CMake 的分步指南.
- Article + Lecture - 拥抱现代 CMake - 斯蒂芬·凯利 (Stephen Kelly).
- Lecture - 用于模块化设计的现代 CMake - Mathieu Ropert,CppCon 2017.
- Article - It's Time To Do CMake Right(关于 CMake 的最佳文章之一).
- 文章 - 关于 CMake 的系列文章 - Martin Hořeňovský
- Lecture - CMake 简介 - Florent Castelli,C++ Sweden 2018.
- Article - 一些不错且准确的 CMake 技巧.
- Article - 适用于图书馆开发人员的现代 CMake.
- Article - Effective Modern CMake:大多数良好实践的重要总结 - 曼努埃尔·宾纳 (Manuel Binna).
- Book - 专业 CMake:实用指南(付费).
- Book - Effective CMake:编写更好的 CMake 的实用建议(尚未完全编写).
- Web Book - 现代 CMake 简介.
- YouTube Series - 如何 CMake Good. [
[CC0-1.0]
][CC0-1.0] - Lecture - 更现代的 CMake (slides & examples) 作者:Deniz Bahadir,Meeting C++ 2018.
- Lecture - 不好了! 更现代的 CMake(slides) 作者:Deniz Bahadir,Meeting C++ 2019.
- Article - 修改默认的 CMake 构建类型/标志、工具链和补丁 - 天哪! - 克里斯蒂安亚当.
- Tutorial - 关于如何正确使用现代 CMake 的教程和示例.
Package Management / Build Systems¶
- hunter - C++ 的跨平台包管理器(基于 CMake ExternalProject). [
[BSD2]
][BSD-2-Clause] - cget - CMake 包检索. 这可用于下载和安装 CMake 包. [
[提升]
][提升] - cppan - C++ Archive Network - 基于 CMake 的 C++ 包管理器,在 C++14 中实现. [
[APACHE2]
][APACHE2] - cpm - 基于 CMake 和 Git 的 C++ 包管理器. [
[麻省理工学院]
][麻省理工学院] - conan - Conan C++ 包管理器,用 Python 实现并具有 CMake 集成后端. [
[麻省理工学院]
][麻省理工学院] - fips - 分布式、多平台 C/C++ 项目的高级构建系统/依赖管理. [
[麻省理工学院]
][麻省理工学院] - Ninja - 构建系统在两个主要方面不同于其他系统:它旨在让其输入文件由更高级别的构建系统(如 CMake)生成,并且旨在尽可能快地运行构建. [
[APACHE2]
][APACHE2] - vcpkg - 获取和构建 C++ 开源库的工具. 在内部使用 CMake 作为构建脚本语言. [
[麻省理工学院]
][麻省理工学院] - pmm - PMM 是 CMake 的一个模块,用于管理...包管理器. [
[麻省理工学院]
][麻省理工学院] - cpm - 一个免安装的 CMake + git 依赖管理器. [
[麻省理工学院]
][麻省理工学院]
Modules¶
- cmake-modules - Ryan Pavlik的 CMake 模块集合. 有许多查找模块,尤其是用于虚拟现实和物理模拟的模块、一些实用程序模块,以及一些针对 CMake 本身的补丁或解决方法. [
[提升]
][提升] - cmake-modules - 这是附加 CMake 模块的集合. 其中大部分来自 Ryan Pavlik. [
[提升]
][提升] - CMake - Eyescale的通用 CMake 模块. [
[BSD3]
][BSD-3-Clause] - cmake-modules - 一些科学图书馆的 CMake 模块. [
[BSD2]
][BSD-2-Clause] - cgcmake - 用于与计算机图形相关的常见应用程序的 CMake 模块. [
[麻省理工学院]
][麻省理工学院] - FindMathematica - Mathematica 的 CMake 模块. [
[麻省理工学院]
][麻省理工学院] - extra-cmake-modules - KDE用于 CMake 的额外模块和脚本. [
[BSD3]
][BSD-3-Clause] - FindICU.cmake - 用于查找 Unicode (ICU) 库国际组件的 CMake 模块. [
[BSD2]
][BSD-2-Clause] - FindTBB - 用于英特尔线程构建模块的 CMake 查找模块. [
[麻省理工学院]
][麻省理工学院] - FindWiX - 用于构建的 CMake 模块 Windows Installer 包与 WiX toolset . [
[BSD3]
][BSD-3-Clause] - FindIDL - 用于构建的 CMake 模块 IDL 使用 MIDL 生成 CLR DLL 文件 Tlbimp . [
[带]
][带] - cmake-modules - hanjianwei的 CMake 模块集合. [
[麻省理工学院]
][麻省理工学院] - YCM - 额外的 CMake 模块 Yet Another Robot Platform 和朋友. [
[BSD3]
][BSD-3-Clause] - CMakeCM - CMake 社区模块.
[无许可证]
- Metabench - 用于编译时微基准测试的 CMake 模块. [
[提升]
][提升] - Oranges - Ben ViningCMake 模块和工具链的库 [
[GPL]
][GPL]
Utility Scripts¶
它们提供了广泛的功能——从处理编译器标志到使用工具. 有些还包含模块.
- cotire - Cotire(编译时间减少器)是一个 CMake 模块,它通过完全自动化技术作为 C 和 C++ 的预编译头文件和统一构建来加速基于 CMake 的构建系统的构建过程. [
[麻省理工学院]
][麻省理工学院] - ucm - 用于管理编译器/链接器标志、收集源代码、预编译头文件、统一构建等. [
[麻省理工学院]
][麻省理工学院] - cmakepp - CMake 构建系统的增强套件. [
[麻省理工学院]
][麻省理工学院] - sugar - CMake 工具和示例:收集源文件、警告抑制等 [
[BSD2]
][BSD-2-Clause] - DownloadProject - 用于在配置时下载外部项目源代码的 CMake 模块. [
[麻省理工学院]
][麻省理工学院] - buildem - 基于 CMake 的模块化系统,利用 ExternalProject 来简化构建.
[许可证]
- coveralls-cmake - 用于 CMake 的 Coveralls JSON 覆盖生成器和上传器. [
[麻省理工学院]
][麻省理工学院] - compatibility - cmake-compile-features 的改进版本. [
[许可证]
](https://github.com/foonathan/compatibility/blob/master/LICENSE) - cmake-modules - LibFindMacros development repository and other cool CMake stuff.
[LICENSE]
- GreatCMakeCookOff - 这是有用和不太有用的 CMake 配方的存储库. [
[麻省理工学院]
][麻省理工学院] - cppcheck-target-cmake - 用于 CMake 的每个目标 CPPCheck. [
[麻省理工学院]
][麻省理工学院] - clang-tidy-target-cmake - 使用 CMake 向目标添加 clang-tidy 检查. [
[麻省理工学院]
][麻省理工学院] - cmake-unit - CMake 的单元测试框架. [
[麻省理工学院]
][麻省理工学院] - cmake-header-language - CMake 宏来确定头文件的语言. [
[麻省理工学院]
][麻省理工学院] - tooling-cmake-util - 所有 polysquare CMake 工具的实用程序和通用库. [
[麻省理工学院]
][麻省理工学院] - iwyu-target-cmake - CMake 集成以包含您使用的内容. [
[麻省理工学院]
][麻省理工学院] - sanitizers-cmake - 用于为二进制目标启用消毒剂的 CMake 模块. [
[麻省理工学院]
][麻省理工学院] - cmake-precompiled-header - Visual Studio and GCC precompiled header macro.
[LICENSE]
- CMakePCHCompiler - 通过自定义编译器扩展 CMake 预编译标头 - 支持重用! [
[麻省理工学院]
][麻省理工学院] - CMake-codecov - 启用代码覆盖率并使用 CMake 目标生成覆盖率报告. [
[GPL]
][GPL] - cmake-get - 在配置或脚本模式下获取依赖项.
[无许可证]
- ixm - 在尝试编写 Modern Flexible CMake 时让 CMake 不那么痛苦. [
[麻省理工学院]
][麻省理工学院] - CMakeCooking - 具有外部依赖项的 CMake 项目的灵活开发环境
. [
[APACHE2]
][APACHE2]
Toolchains¶
- dockcross - Docker 镜像中的交叉编译工具链. [
[麻省理工学院]
][麻省理工学院] - android-cmake - 用于 Android NDK 的 CMake 工具链文件和其他脚本. [
[BSD3]
][BSD-3-Clause] - ios-cmake - 使用 CMake 进行 iOS 开发的工具链文件和示例. [
[BSD3]
][BSD-3-Clause] - qt-android-cmake - 用于在没有 QtCreator 的情况下在 Android 上构建和部署基于 Qt 的应用程序.
[许可证]
- mingw-w64-cmake - 基于 CMake 的 MinGW-w64 交叉工具链 - 构建 mpv 的 Windows 二进制文件. [
[ISC]
][ISC] - cmake-avr - 用于 AVR 的 CMake 工具链.
[许可证]
- arduino-cmake - 这是 Arduino 平台的 CMake 项目设置. [
[MPL]
][MPL] - polly - 用于跨平台构建和 CI 测试的 CMake 工具链文件和脚本的集合. [
[BSD2]
][BSD-2-Clause] - toolchains - 用于与 CMake 交叉编译. 它们主要用于 ArchLinux.
[无许可证]
- cmake - CMake 工具链文件的集合,主要用于静态链接. [
[APACHE2]
][APACHE2] - Arduino-CMake-Toolchain - 适用于所有官方和第 3 方 Arduino 平台的 CMake 工具链. [
[麻省理工学院]
][麻省理工学院]
Examples / Templates¶
- cmake-init - 使用 CMake 进行可靠的跨平台 C++ 项目设置的模板.
[许可证]
- android-cmake - 使用示例 ruslo/hunter Android 应用程序的包管理器. [
[BSD2]
][BSD-2-Clause] - hunter-simple - 使用下载/安装依赖项的示例 ruslo/hunter 包管理器. [
[BSD2]
][BSD-2-Clause] - package-example - find_package 的配置模式(示例 this 堆栈溢出问题).
[无许可证]
- minimal_cmake_example - 最小的 CMake 示例,涵盖依赖项和打包. [
[CC0-1.0]
][CC0-1.0] - cmake-example - 演示各种 CMake 功能的示例项目. [
[BSD3]
][BSD-3-Clause] - cmake-examples - Useful CMake examples in a tutorial format. [
[MIT]
][MIT] - mini-cmake-qt - Qt 5 项目的最小 CMake 模板.
[许可证]
- BASIS -CMake BASIS 使创建协同工作的可共享软件和库变得容易. [
[BSD2]
][BSD-2-Clause] - cpp-boilerplate - Template that aims to be a reference for modern CMake and CI. [
[MIT]
][MIT] - how-to-export-cpp-library - 一个与操作系统无关的模板项目,用于导出共享、静态或仅标头的 C++ 库,运动 ctest 和 CI 支持,用普通 CMake 编写,带有逐行教程注释. [
[麻省理工学院]
][麻省理工学院] - modern-cmake-sample - 通过使用目标来最佳实践和正确使用 CMake.
[无许可证]
- CMakeInstallExample - 使用 Cmake 的 C++ 项目 (Windows) 安装示例.
[无许可证]
- cpp14-project-template - 带有 CI、测试、代码覆盖率、文档和静态分析集成的 C++14 模板. [
[CC0-1.0]
][CC0-1.0] - cmake_templates - 用于创建 C++ 库和可执行文件(包括柯南)的模板.
[无许可证]
- cmake_snippets - 可复制粘贴的简短 CMake 片段. [
[BSD3]
][BSD-3-Clause] - cmake-cookbook - 一本巨大的 CMake 食谱,里面全是食谱. [
[麻省理工学院]
][麻省理工学院] - cpp-template - 模板 C++ 存储库,使用 CMake 和 Catch.
[无许可证]
- pitchfork - 本机 C 和 C++ 项目的一组约定. [
[麻省理工学院]
][麻省理工学院] - cmake-examples - 一组尽可能简单的现代 CMake 项目. [
[麻省理工学院]
][麻省理工学院] - cpp-project - C++ 项目的样板 - 测试、CI、覆盖率、文档. [
[未授权]
][未授权] - ModernCppStarter - 使用 CMake、CI、代码覆盖率、clang 格式、可重现的依赖管理、使用的测试的现代 C++ 项目模板 doctest 以及更多. [
[未授权]
][未授权]
Other¶
- autocmake - 使用 autocmake.yml 文件 Autocmake 将 CMake 构建块组合到 CMake 项目中,并生成 CMakeLists.txt 以及设置脚本,该脚本用作 CMakeLists.txt 的前端. [
[BSD3]
][BSD-3-Clause] - UseLATEX - 收集 CMake 宏以简化构建 LaTeX 文件. [
[BSD3]
][BSD-3-Clause] - scikit-build - 改进了 CPython C 扩展的构建系统生成器. [
[麻省理工学院]
][麻省理工学院] - node-cmake - 用于 node.js 本机模块的基于 CMake 的构建系统. [
[ISC]
][ISC] - cmake-font-lock - 对 Emacs 中的 CMake 脚本的高级语法着色支持. [
[GPL]
][GPL] - autovala - 自动为您的 Vala 项目生成 CMake 配置文件的程序. [
[GPL]
][GPL] - catkin - 基于 CMake 的构建系统,用于构建机器人操作系统 (ROS) 中的所有包. [
[BSD3]
][BSD-3-Clause] - suitesparse-metis-for-windows - 用于轻松使用 SuiteSparse+METIS 的 CMake 脚本. [
[BSD3]
][BSD-3-Clause] - osg-3rdparty-cmake - 用于构建 OpenSceneGraph 第三方库的 CMake 脚本.
[混合许可证]
- cmake-d - 用于 D2 的 CMake. [
[麻省理工学院]
][麻省理工学院] - cmakeprojectmanager2 - 增强了 Qt Creator 的 CMake 项目管理器插件.
[无许可证]
- cmake-lint - 检查 CMake 文件中的编码风格问题. cmakelint 需要 Python. [
[APACHE2]
][APACHE2] - git-cmake-format - 将 clang-format 集成到 git 存储库中托管的 CMake 项目中.
[许可证]
- configure-cmake - configure-cmake 是用于基于 CMake 的项目的 autotools 样式的配置脚本. [
[CC0-1.0]
][CC0-1.0] - cmake-ast - 将 CMake 文件简化为 AST 的 Python 模块. [
[麻省理工学院]
][麻省理工学院] - cmake-checks-cache - CMake 检查缓存辅助模块. [
[麻省理工学院]
][麻省理工学院] - cmake_check - CMake 语言的静态分析(linter)(例如,执行现代 CMake 规则). [
[麻省理工学院]
][麻省理工学院] - cmake-language-server - CMake 语言服务器协议实现. [
[麻省理工学院]
][麻省理工学院] - cmake-maven-plugin - Maven 构建的 CMake 集成. [
[APACHE2]
][APACHE2] - version-from-git - 将 git 信息烘焙到您的二进制文件中. [
[麻省理工学院]
][麻省理工学院]
License¶
这是在下发布 Creative Commons Attribution 4.0 International
许可证(CC BY 4.0)
.
[ISC]:https://opensource.org/licenses/ISC [GPL]:https://www.gnu.org/licenses/gpl-3.0.html [GPL2]:https://www.gnu.org/licenses/old-licenses/gpl-2.0.html [LGPL]:https://www.gnu.org/licenses/lgpl-3.0.en.html [麻省理工学院]:https://opensource.org/licenses/MIT [提升]:http://www.boost.org/LICENSE_1_0.txt [BSD-2-条款]:https://opensource.org/licenses/BSD-2-Clause [BSD-3-Clause]:https://opensource.org/licenses/BSD-3-Clause [APACHE2]:http://www.apache.org/licenses/LICENSE-2.0 [CC0-1.0]:https://creativecommons.org/publicdomain/zero/1.0/ [MPL]:https://www.mozilla.org/en-US/MPL/2.0/ [未经许可]:https://unlicense.org/