跳到主要内容

CMake 教程

欢迎学习 CMake!本教程将带你从零开始,逐步掌握 CMake 构建系统的核心知识和实践技能。

什么是 CMake?

CMake 是一个开源的跨平台构建系统生成器。它不直接构建软件,而是生成标准的构建文件(如 Unix 的 Makefile、Windows 的 Visual Studio 项目文件等),然后由本地构建工具执行实际的编译和链接。

CMake 的核心特点

  • 跨平台:支持 Windows、Linux、macOS 等多种操作系统
  • 多构建系统支持:生成 Makefile、Ninja、Visual Studio、Xcode 等多种构建文件
  • 语言无关:支持 C、C++、Objective-C、Fortran、Java 等多种语言
  • 依赖管理:自动查找和管理外部库依赖
  • 测试支持:集成 CTest 和 CDash 测试框架

CMake 的工作流程

CMake 与传统构建系统对比

特性CMake手写 MakefileIDE 项目文件
跨平台自动处理需要多版本平台特定
依赖管理自动查找手动管理手动配置
外部库支持find_package手动指定手动配置
构建类型Debug/Release手动配置IDE 内置
可维护性中等

为什么学习 CMake?

  1. 行业标准:CMake 已成为 C/C++ 项目的主流构建工具
  2. 大型项目支持:Qt、KDE、LLVM、OpenCV 等知名项目都在使用
  3. 现代 C++ 开发:C++20 模块、包管理器等现代特性支持
  4. IDE 无关性:开发者可以使用自己喜欢的编辑器和构建环境
  5. CI/CD 友好:命令行驱动,易于集成到自动化流程

CMake 的应用场景

开源项目

  • 跨平台的库和应用程序
  • 需要支持多种编译器和构建系统
  • 需要处理复杂的依赖关系

企业开发

  • 大型代码库的统一构建
  • 多平台产品发布
  • 嵌入式系统开发

科研和教学

  • 跨平台的研究代码
  • 教学项目的标准化构建

CMake 版本历史

版本发布时间重要特性
3.02009重新设计,现代化架构
3.152018Windows 持久化缓存
3.202021预设包管理器支持
3.252023预设配置文件、编译器预设
3.282024增强的依赖提供器

本教程基于 CMake 3.28 编写。

教程目录

基础入门

目标管理

依赖管理

高级特性

测试与打包

知识速查

学习建议

  1. 动手实践:每学一个知识点,都要创建示例项目验证
  2. 循序渐进:从简单的单文件项目开始,逐步掌握复杂功能
  3. 阅读官方文档:CMake 官方文档是最权威的参考资料
  4. 参考优秀项目:学习知名开源项目的 CMake 配置

参考资源

准备好开始学习了吗?点击下一章开始你的 CMake 学习之旅!