01
CMake概述
什么是CMake,CMake的历史与优势,CMake vs Makefile vs 其他构建系统。
概念历史
02
环境搭建
Windows/Linux/macOS下安装CMake,验证安装,第一个Hello CMake项目。
安装入门
03
CMake基础语法
注释、命令、变量、列表、流程控制(if/foreach/while)。
语法控制
04
第一个CMake项目
CMakeLists.txt结构,project()与cmake_minimum_required(),add_executable()。
项目结构
05
目标与属性
目标的概念,设置目标属性(set_target_properties),编译选项与链接选项。
目标属性
06
库的创建与链接
add_library(),静态库与动态库,target_link_libraries()。
库链接
07
头文件与路径管理
target_include_directories(),include_directories(),路径的传递与继承。
头文件路径
08
变量与缓存
普通变量、缓存变量、环境变量,set()与option(),CMakeCache.txt。
变量缓存
09
生成器表达式
什么是生成器表达式,$<...>语法,在编译选项和链接中的使用。
表达式编译
10
查找依赖包
find_package(),Config模式与Module模式,编写简单的FindXXX.cmake。
依赖查找
11
子目录与项目组织
add_subdirectory(),构建树与源树分离,大型项目的目录结构设计。
组织子目录
12
自定义命令与目标
add_custom_command(),add_custom_target(),生成源代码或文件。
自定义命令
13
安装与打包
install()命令,CPack配置,生成安装包(deb/rpm/nsis)。
安装打包
14
测试框架集成
enable_testing(),add_test(),CTest的使用,测试覆盖率。
测试CTest
15
CMake与IDE
生成Visual Studio/Xcode/CodeBlocks工程,CMAKE_GENERATOR的选择。
IDE生成器
16
预设与工具链
CMakePresets.json,工具链文件(Toolchain),交叉编译入门。
预设工具链
17
FetchContent与依赖管理
FetchContent_Declare(),自动下载第三方库,与ExternalProject对比。
依赖Fetch
18
模块化设计
编写自己的CMake模块,include()与module路径,函数与宏(function/macro)。
模块函数
19
编译特性与标准控制
target_compile_features(),C++11/14/17/20标准设置,编译器检测。
标准特性
20
调试与日志
message()的多种用法,CMake --trace,--debug-output,排查构建问题。
调试日志
21
性能优化
并行构建,ccache集成,预编译头文件(PCH),Unity构建。
优化并行
22
跨平台构建
平台检测(WIN32/APPLE/UNIX),路径分隔符处理,条件编译。
跨平台检测
23
配置文件生成
configure_file(),生成config.h,版本号与构建时间注入。
配置生成
24
对象库与接口库
OBJECT库,INTERFACE库,纯头文件库的管理。
对象库接口
25
别名目标与导入目标
add_library(… ALIAS),导入预编译库,find_package的导入目标。
别名导入
26
Sanitizer与代码质量
集成AddressSanitizer,UBSan,TSan,设置编译标志。
Sanitizer质量
27
文档生成
集成Doxygen,使用sphinx,CMake中调用文档生成工具。
文档Doxygen
28
CI/CD集成
GitHub Actions,GitLab CI,Jenkins中的CMake构建脚本编写。
CI/CD自动化
29
实战案例一:中型C++库
构建一个中型C++库(含测试、文档、安装)。
实战库
30
实战案例二:跨平台桌面应用
构建一个跨平台桌面应用(含第三方依赖、打包、CI)。
实战桌面