CMake

Awesome CMake Awesome

>精选的超赞清单 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 . [[MIT]] [MIT]
  • 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-由C ++ Now 2017年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模块. [[MIT]] [MIT]
  • 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 InstallerWiX toolset . [`[BSD3]'] [BSD-3-条款]
  • FindIDL -用于建筑的CMake模块 IDL MIDL文件并使用生成CLR DLL Tlbimp . [[MIT]] [MIT]
  • cmake-modules - hanjianwei 的CMake模块集合. [[MIT]] [MIT]
  • YCM -额外的CMake模块 Yet Another Robot Platform 和朋友. [[BSD3]] [BSD-3-Clause]
  • CMakeCM -CMake社区模块. [无许可证]
  • Metabench -用于编译时微基准测试的CMake模块. [[BOOST]] [BOOST]

Utility Scripts

它们提供了广泛的功能-从处理编译器标志到使用工具. 有些还包含模块.

Toolchains

Examples / Templates

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. [[MY]] [MY]
  • 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 Language Server Protocol Implementation. [[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/