CMake 强大的软件构建系统# 推荐阅读: 将现有系统转换为 CMake 使用 CMake 进行交叉编译 自定义命令 快速上手 CMake 源目录和二进制目录 基本用法 安装 CMake Pip(x)(推荐) (官方,通常每日更新) Anaconda / Conda-Forge 运行 CMake 构建项目 选择编译器 选择生成器 设置选项 详细和部分构建 选项 标准选项 调试 CMake 文件 要点与禁忌 CMake 禁忌 CMake 模式 选择 2025 年的最低版本 CMake 核心概念 CMake 目标 使用要求 使用目标指定优化或调试库 对象库 源文件 目录、测试和属性 CMake 基础 CMake 基础知识 最低版本 设置项目 创建可执行文件 创建库 目标是你朋友 变量和缓存 局部变量 缓存变量 环境变量 缓存 属性 使用 CMake 编程 生成器表达式 宏和函数 参数 与你的代码通信 配置文件 Version.h.in CMake 行 读取文件 如何组织你的项目 运行其他程序 在配置时运行命令 在构建时运行命令 包含常见工具 简单的例子 附加功能 默认构建类型 添加功能 位置无关代码 小库 跨过程优化 CCache 和工具 CCache 工具 Clang tidy 包含你所使用的 链接您使用的文件 Clang-format 有用模块 CMakeDependentOption CMakePrintHelpers CheckCXXCompilerFlag try_compile/try_run FeatureSummary 调试代码 CMake 调试 打印变量 跟踪运行情况 在调试模式下构建 使用其他项目 Git 子模块方法 附加:Git 版本号 下载项目 下载方法:构建时 下载方式:配置时 FetchContent (CMake 3.11+) 测试 一般测试信息 作为测试的一部分构建 测试框架 GoogleTest 子模块方法(首选) 下载方法 FetchContent: CMake 3.11 Catch 配置方法 快速下载 Vendoring 直接包含 导出和安装 他人使用你的库的方法 查找模块(坏方法) 添加子项目 导出 安装 安装 导出 打包 库 CUDA 添加 CUDA 语言 CUDA 相关变量 添加库/可执行文件 针对架构 与目标工作 有用的变量 经典 FindCUDA [警告:不建议使用] (仅作参考用) OpenMP Boost MPI ROOT 查找 ROOT 正确的方法(目标) 旧的全局方式 组件 字典生成 手动构建字典 使用现有目标构建字典 使用旧版 ROOT Minuit2 用法 开发 转换现有系统到 CMake 源代码目录结构 构建目录 转换项目时有用的 CMake 命令 将 UNIX Makefiles 转换为 CMake CMake 学习资料 官方资源 书籍资源 开源项目与博客 其他资源