CMake 从入门到精通:完整教程
CMake 从入门到精通:完整教程
构建系统是软件工程的骨架。 一套好的构建系统能让你的项目在不同平台、不同编译器下一致地编译、测试与部署。
教程简介
本教程共 18 章,从 CMake 的历史与设计理念出发,逐步深入到变量系统、目标管理、依赖管理、交叉编译、测试集成、Docker 构建、最佳实践等主题。每章包含:
- 📖 核心概念:清晰讲解知识点
- 💻 可运行代码示例:即学即用
- 📊 对比表格:快速理解差异
- ⚠️ 注意事项:避开常见陷阱
- 🏢 业务场景:真实项目中的应用
- 📚 扩展阅读:深入探索的方向
目录
| 章节 | 标题 | 关键词 |
|---|---|---|
| 第 1 章 | CMake 简介与背景 | 历史、设计理念、Makefile 对比、适用场景 |
| 第 2 章 | 安装与环境配置 | 安装、版本管理、CMake GUI、IDE 集成 |
| 第 3 章 | 基础入门 | CMakeLists.txt、project、add_executable、构建流程 |
| 第 4 章 | 变量系统 | 变量、缓存变量、环境变量、列表、作用域 |
| 第 5 章 | 目标与属性 | 目标、PUBLIC/PRIVATE/INTERFACE、ALIAS、导入目标 |
| 第 6 章 | 库的构建与使用 | 静态库、动态库、对象库、find_package、pkg-config |
| 第 7 章 | 查找模块详解 | Find 模块、Config 模式、版本约束、组件 |
| 第 8 章 | 命令与控制流 | 条件、循环、函数、宏、自定义命令、生成器表达式 |
| 第 9 章 | 工具链与交叉编译 | 工具链文件、交叉编译、编译器标志、平台检测 |
| 第 10 章 | 测试与 CTest | CTest、标签、超时、覆盖率、内存检查 |
| 第 11 章 | 安装与打包 | install 规则、组件、导出、CPack |
| 第 12 章 | CMake 预设 | CMakePresets.json、配置预设、构建预设 |
| 第 13 章 | 高级特性 | 生成器表达式、自定义属性、目标依赖 |
| 第 14 章 | 模块系统 | Utility 模块、自定义 Find 模块、可复用模块 |
| 第 15 章 | 依赖管理 | FetchContent、ExternalProject、vcpkg、Conan |
| 第 16 章 | Docker 与 CI/CD | Docker 构建、多阶段构建、CI 集成、缓存 |
| 第 17 章 | 问题排查 | 配置错误、链接错误、变量调试 |
| 第 18 章 | 最佳实践 | 现代 CMake、项目结构、性能优化、可维护性 |
适读人群
- 初学者:从第 1 章开始,循序渐进
- 有经验的开发者:可直接跳到感兴趣的章节
- DevOps / CI 工程师:重点关注第 12、16 章
- 架构师:重点关注第 5、13、18 章
环境要求
| 工具 | 最低版本 | 推荐版本 |
|---|---|---|
| CMake | 3.16 | 3.28+ |
| 编译器 | GCC 7 / Clang 6 / MSVC 2019 | GCC 13+ / Clang 17+ / MSVC 2022 |
| 操作系统 | Linux / macOS / Windows | 任意现代版本 |