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 . [
[WITH]
] [WITH] - 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 -有效的CMake-2017年C ++的Daniel Pfeifer撰写.
- Article -使用CMake构建跨平台CUDA应用程序.
- Tutorial -了解CMake的分步指南.
- Article + Lecture -拥抱现代CMake-Stephen Kelly撰写.
- Lecture -模块化设计的现代CMake-Mathieu Ropert,CppCon 2017.
- Article -现在该做正确的CMake了(关于CMake的最佳文章之一). *文章-关于CMake的系列-作者:MartinHořeňovský
- Lecture -CMake简介-作者:Florent Castelli,C ++ Sweden 2018.
- Article -一些不错且准确的CMake技巧.
- Article -适用于图书馆开发人员的现代CMake.
- Article -有效的现代CMake:大多数最佳做法的摘要-Manuel Binna.
- Book -专业CMake:实用指南(收费).
- Book -有效的CMake:编写更好的CMake的实用建议(尚未完全编写).
- Web Book -现代CMake简介.
- YouTube Series -如何CMake好.
[CC0-1.0]
- Lecture -更现代的CMake(slides & examples)-由会议C ++ 2018的Deniz Bahadir撰写.
- Lecture - 不好了! 更现代的CMake(slides)-由会议C ++ 2019的Deniz Bahadir撰写.
- Article -修改默认的CMake构建类型/标志,工具链和补丁-噢,天哪! -克里斯蒂安·亚当(Cristian Adam).
- Tutorial -有关如何正确使用现代CMake的教程和示例.
Package Management / Build Systems¶
- hunter -C ++的跨平台软件包管理器(基于CMake ExternalProject). [
[BSD2]
] [BSD-2-Clause] - cget -CMake软件包检索. 这可用于下载和安装CMake软件包. [
[BOOST]
] [BOOST] - cppan -C ++存档网络-基于CMake的C ++程序包管理器,在C ++ 14中实现. [
[APACHE2]
] [APACHE2] - cpm -基于CMake和Git的C ++软件包管理器. [
[MIT]
] [MIT] - conan -Conan C ++软件包管理器,以Python实现,并具有CMake集成后端. [
[MIT]
] [MIT] - fips -分布式,多平台C / C ++项目的高级构建系统/依赖性管理. [
[MIT]
] [MIT] - Ninja -在两个主要方面与其他系统不同的构建系统:它的设计目的是使输入文件由更高级别的构建系统(例如CMake)生成,并且它设计用于尽可能快地运行构建. [
[APACHE2]
] [APACHE2] - vcpkg -获取和构建C ++开源库的工具. 内部使用CMake作为构建脚本语言. [
[MIT]
] [MIT] - pmm -PMM是用于CMake的模块,用于管理...程序包管理器. [
[MIT]
] [MIT] - cpm -免安装CMake + git依赖管理器. [
[MIT]
] [MIT]
Modules¶
- cmake-modules - Ryan Pavlik的CMake模块集合. 有很多查找模块,特别是用于虚拟现实和物理模拟的查找模块,一些实用程序模块以及CMake本身的某些修补程序或变通办法. [
[BOOST]
] [BOOST] - cmake-modules -这是其他CMake模块的集合. 其中大多数来自Ryan Pavlik. [
[BOOST]
] [BOOST] - CMake - Eyescale的常见CMake模块. [
[BSD3]
] [BSD-3-Clause] - cmake-modules -一些科学图书馆的CMake模块. [
[BSD2]
] [BSD-2-Clause] - cgcmake -用于与计算机图形相关的常见应用程序的CMake模块. [
[MIT]
] [MIT] - FindMathematica -Mathematica的CMake模块. [
[WITH]
] [WITH] - extra-cmake-modules - KDE的CMake额外模块和脚本. [
[BSD3]
] [BSD-3-Clause] - FindICU.cmake -CMake模块以查找Unicode国际组件(ICU)库. [
[BSD2]
] [BSD-2-Clause] - FindTBB -用于英特尔线程构建模块的CMake查找模块. [
[MIT]
] [MIT] - FindWiX -用于建筑的CMake模块 Windows Installer 与包装 WiX toolset . [
`[BSD3]
'] [BSD-3-条款] - FindIDL -用于建筑的CMake模块 IDL MIDL文件并使用生成CLR DLL Tlbimp . [
[WITH]
] [WITH] - cmake-modules - hanjianwei的CMake模块集合. [
[MIT]
] [MIT] - YCM -额外的CMake模块 Yet Another Robot Platform 和朋友. [
[BSD3]
] [BSD-3-Clause] - CMakeCM -CMake社区模块.
[无许可证]
- Metabench -用于编译时微基准测试的CMake模块. [
[BOOST]
] [BOOST]
Utility Scripts¶
它们提供了广泛的功能-从处理编译器标志到使用工具. 有些还包含模块.
- cotire -Cotire(编译时间减少器)是一个CMake模块,它通过完全自动化的技术(例如针对C和C ++的预编译头和统一构建)来加速基于CMake的构建系统的构建过程. [
[MIT]
] [MIT] - ucm -用于管理编译器/链接器标志,收集源,预编译的头文件,统一构建等. [
[MIT]
] [MIT] - cmakepp -CMake构建系统的增强套件. [
[MIT]
] [MIT] - sugar -CMake工具和示例:收集源文件,警告抑制等.[
[BSD2]
] [BSD-2-Clause] - DownloadProject -CMake模块,用于在配置时下载外部项目的源. [
[MIT]
] [MIT] - buildem -基于模块化CMake的系统,利用ExternalProject简化了构建. [
[LICENSE]
](https://github.com/janelia-flyem/buildem/blob/master/LICENSE.txt) - coveralls-cmake -Coveralls CMake的JSON覆盖范围生成器和上传器. [
[MIT]
] [MIT] - compatibility -cmake编译功能的改进版本. [
[LICENSE]
](https://github.com/foonathan/compatibility/blob/master/LICENSE) - cmake-modules - LibFindMacros development repository and other cool CMake stuff.
[LICENSE]
- GreatCMakeCookOff -这是有用的和不太有用的CMake配方的存储库. [
[MIT]
] [MIT] - cppcheck-target-cmake -针对CMake的每个目标CPPCheck. [
[MIT]
] [MIT] - clang-tidy-target-cmake -使用CMake将整洁的检查添加到目标. [
[MIT]
] [MIT] - cmake-unit -CMake的单元测试框架. [
[MIT]
] [MIT] - cmake-header-language -CMake宏,用于确定头文件的语言. [
[MIT]
] [MIT] - tooling-cmake-util -所有polysquare CMake工具的实用程序和公共库. [
[MIT]
] [MIT] - iwyu-target-cmake -CMake集成,可包含您所使用的内容. [
[MIT]
] [MIT] - sanitizers-cmake -CMake模块为二进制目标启用消毒剂. [
[MIT]
] [MIT] - cmake-precompiled-header - Visual Studio and GCC precompiled header macro.
[LICENSE]
- CMakePCHCompiler -通过自定义编译器扩展的CMake预编译头-具有重用支持! [
[MIT]
] [MIT] - CMake-codecov -启用代码覆盖率并生成带有CMake目标的覆盖率报告. [
[GPL]
] [GPL] - cmake-get -在配置或脚本模式下获取依赖项.
[无许可证]
- ixm -减少尝试编写Modern Flexible CMake时的CMake痛苦. [
[MIT]
] [MIT] - CMakeCooking -具有外部依赖项的CMake项目的灵活开发环境
. [
[APACHE2]
] [APACHE2]
Toolchains¶
- dockcross -在Docker映像中交叉编译工具链. [
[MIT]
] [MIT] - android-cmake -适用于Android NDK的CMake工具链文件和其他脚本. [
[BSD3]
] [BSD-3-Clause] - ios-cmake -使用CMake进行iOS开发的工具链文件和示例. [
[BSD3]
] [BSD-3-Clause] - qt-android-cmake -用于在没有QtCreator的Android上构建和部署基于Qt的应用程序. [
[LICENSE]
](https://github.com/LaurentGomila/qt-android-cmake/blob/master/license.txt) - mingw-w64-cmake -基于CMake的MinGW-w64交叉工具链-构建mpv的Windows二进制文件. [
[ISC]
] [ISC] - cmake-avr -用于AVR的CMake工具链. [
[LICENSE]
](https://github.com/mkleemann/cmake-avr/blob/master/LICENSE) - arduino-cmake -这是Arduino平台的CMake项目设置. [
[MPL]
] [MPL] - polly -收集CMake工具链文件和脚本,以进行跨平台构建和CI测试. [
[BSD2]
] [BSD-2-Clause] - toolchains -用于与CMake交叉编译. 它们主要用于ArchLinux.
[无许可证]
- cmake -收集CMake工具链文件,主要用于静态链接. [
[APACHE2]
] [APACHE2] - Arduino-CMake-Toolchain -适用于所有官方和第三方Arduino平台的CMake工具链. [
[MIT]
] [MIT]
Examples / Templates¶
- cmake-init -使用CMake进行可靠的跨平台C ++项目设置的模板. [
[LICENSE]
](https://github.com/cginternals/cmake-init/blob/master/LICENSE) - 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]
- cmake-example -示例项目,演示了各种CMake功能. [
[BSD3]
] [BSD-3-Clause] - cmake-examples -教程格式的有用CMake示例. [
[MIT]
] [MIT] - mini-cmake-qt -Qt 5项目的最小CMake模板. [
[LICENSE]
](https://github.com/euler0/mini-cmake-qt/blob/master/LICENSE) - BASIS -CMake BASIS 使创建可协同工作的可共享软件和库变得容易. [
[BSD2]
] [BSD-2-Clause] - cpp-boilerplate -旨在成为现代CMake和CI参考的模板. [
[MIT]
] [MIT] - how-to-export-cpp-library -一个与操作系统无关的模板项目,用于导出共享的,静态的或仅标头的C ++库,支持ctest和CI,均以纯CMake编写并带有逐行教程注释. [
[MIT]
] [MIT] - modern-cmake-sample -使用目标的最佳做法和CMake的正确用法.
[无许可证]
- CMakeInstallExample -使用Cmake的C ++项目(Windows)的安装示例.
[无许可证]
- cpp14-project-template -具有CI,测试,代码覆盖率,文档和静态分析集成的C ++ 14模板.
[CC0-1.0]
- cmake_templates -用于创建C ++库和可执行文件(包括柯南)的模板.
[无许可证]
- cmake_snippets -简短的可粘贴复制的CMake片段. [
[BSD3]
] [BSD-3-Clause] - cmake-cookbook -大量食谱的CMake食谱. [
[MIT]
] [MIT] - cpp-template -使用CMake和Catch的模板C ++存储库.
[无许可证]
- pitchfork -本机C和C ++项目的一组约定. [
[MIT]
] [MIT] - cmake-examples -尽可能简单的现代CMake项目的集合. [
[MIT]
] [MIT] - cpp-project -C ++项目的样板-测试,CI,覆盖率,文档. [
[UNLICENSE]
] [UNLICENSE] - ModernCppStarter -使用CMake,CI,代码覆盖率,clang格式,可重现的依赖性管理,使用 doctest 以及更多. [
[UNLICENSE]
] [UNLICENSE]
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扩展的构建系统生成器. [
[MIT]
] [MIT] - 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 -CMake脚本可轻松使用SuiteSparse + METIS. [
[BSD3]
] [BSD-3-Clause] - osg-3rdparty-cmake -用于构建OpenSceneGraph第三方库的CMake脚本.
[混合许可]
- cmake-d -D2的CMake. [
[MIT]
] [MIT] - cmakeprojectmanager2 -用于Qt Creator的增强的CMake Project Manager插件.
[无许可证]
- cmake-lint -检查CMake文件中的编码样式问题. cmakelint需要Python. [
[APACHE2]
] [APACHE2] - git-cmake-format -将clang格式集成到git存储库中托管的CMake项目中. [
[LICENSE]
](https://github.com/kbenzie/git-cmake-format/blob/master/license.txt) - configure-cmake -configure-cmake是用于基于CMake的项目的自动工具样式的配置脚本.
[CC0-1.0]
- cmake-ast -将CMake文件转换为AST的Python模块. [
[MIT]
] [MIT] - cmake-checks-cache -CMake检查缓存帮助器模块. [
[MIT]
] [MIT] - cmake_check -CMake语言的静态分析(线性)(例如,强制执行现代CMake规则). [
[MIT]
] [MIT] - cmake-language-server -CMake语言服务器协议实现. [
[MIT]
] [MIT] - cmake-maven-plugin -用于Maven构建的CMake集成. [
[APACHE2]
] [APACHE2]
License¶
This is released under the 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 [MIT]:https://opensource.org/licenses/MIT [BOOST]:http://www.boost.org/LICENSE_1_0.txt [BSD-2-Clause]: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
[MPL]:https://www.mozilla.org/zh-CN/MPL/2.0/ [未授权]:https://unlicense.org/