CMake 食谱
该存储库收集 Packt 出版、Radovan Bast 和 Roberto Di Remigio 撰写的 CMake Cookbook 中包含的食谱来源
目录
第 1 章:从简单的可执行文件到库
- 1. 将单个源文件编译为可执行文件
- 2. 切换发电机
- 3. 构建和链接静态库和共享库
- 4. 用条件控制编译
- 5. 向用户呈现选项
- 6. 指定编译器
- 7. 切换构建类型
- 8. 控制编译器标志
- 9. 制定语言标准
- 10. 使用控制流结构
第 2 章:检测环境
- 1. 发现操作系统
- 2. 处理平台相关的源代码
- 3. 处理依赖于编译器的源代码
- 4. 发现主机处理器架构
- 5. 发现主机处理器指令集
- 6. 为 Eigen 库启用矢量化
第 3 章:检测外部库和程序
- 1.检测Python解释器
- 2. 检测Python库
- 3. 检测Python模块和包
- 4. 检测 BLAS 和 LAPACK 数学库
- 5. 检测OpenMP并行环境
- 6.检测MPI并行环境
- 7. 检测特征库
- 8. 检测Boost库
- 9、检测外部库:一、使用
pkg-config
- 10、检测外部库: II.编写查找模块
第 4 章:创建和运行测试
- 1. 创建一个简单的单元测试
- 2. 使用 Catch2 库定义单元测试
- 3. 定义单元测试并链接 Google Test
- 4. 定义单元测试并链接Boost测试
- 5. 使用动态分析来检测内存缺陷
- 6. 测试预期失败
- 7. 对长时间测试使用超时
- 8. 并行运行测试
- 9. 运行一部分测试
- 10. 使用测试夹具
第 5 章:配置时和构建时操作
- 1.使用与平台无关的文件操作
- 2. 在配置时运行自定义命令
- 3. 在构建时运行自定义命令: I. 使用
add_custom_command
- 4. 在构建时运行自定义命令: II.使用
add_custom_target
- 5. 在构建时为特定目标运行自定义命令
- 6. 探测编译和链接
- 7. 探测编译器标志
- 8. 探测执行
- 9. 使用生成器表达式微调配置和编译
第 6 章:生成源代码
- 1. 配置时生成源
- 2. 使用Python在配置时生成源代码
- 3. 使用Python在构建时生成源代码
- 4. 记录项目版本信息以便重现
- 5. 从文件中记录项目版本
- 6. 在配置时记录 Git 哈希值
- 7. 在构建时记录 Git 哈希值
第 7 章:构建项目
- 1. 函数和宏的代码重用
- 2. 将 CMake 源拆分为模块
- 3. 编写函数来测试和设置编译器标志
- 4. 使用命名参数定义函数或宏
- 5. 重新定义函数和宏
- 6. 弃用函数、宏和变量
- 7. 使用
add_subdirectory
限制范围 - 8. 避免使用
target_sources
全局变量 - 9. 组织Fortran项目
第 8 章:超级构建模式
- 1. 使用超级构建模式
- 2. 使用超级构建管理依赖项:I. Boost 库
- 3. 使用超级构建管理依赖关系:II。 FFTW 图书馆
- 4. 使用超级构建管理依赖关系:III。谷歌测试框架
- 5. 将项目作为超级构建进行管理
第 9 章:混合语言项目
- 1. 构建使用 C/C++ 库的 Fortran 项目
- 2. 构建使用 Fortran 库的 C/C++ 项目
- 3. 使用 Cython 构建 C++ 和 Python 项目
- 4. 使用 Boost.Python 构建 C++ 和 Python 项目
- 5. 使用 pybind11 构建 C++ 和 Python 项目
- 6. 使用 Python CFFI 混合 C、C++、Fortran 和 Python
第 10 章:编写安装程序
- 1. 安装你的项目
- 2.生成导出头
- 3. 导出您的目标
- 4. 安装超级构建
第 11 章:打包项目
- 1.生成源码包和二进制包
- 2. 通过 PyPI 分发使用 CMake/pybind11 构建的 C++/Python 项目
- 3. 通过 PyPI 分发使用 CMake/CFFI 构建的 C/Fortran/Python 项目
- 4. 将一个简单的项目作为 Conda 包分发
- 5. 将具有依赖项的项目作为 Conda 包分发
第 12 章:构建文档
- 1. 使用 Doxygen 构建文档
- 2. 使用Sphinx构建文档
- 3. 结合 Doxygen 和 Sphinx
第 13 章:替代生成器和交叉编译
- 1.交叉编译hello world示例
- 2. 使用 OpenMP 并行化交叉编译 Windows 二进制文件
第 14 章:测试仪表板
- 1. 将测试部署到 CDash 仪表板
- 2. 向 CDash 仪表板报告测试覆盖率
- 3. 使用AddressSanitizer并向CDash报告内存缺陷
- 4. 使用 ThreadSanitizer 并向 CDash 报告数据争用
第 15 章:将项目移植到 CMake