01
C++工程概述
什么是构建系统、为什么需要构建系统、主流构建工具对比(Make、CMake、Bazel、Ninja)
概念对比
02
GCC/G++编译器详解
编译流程(预处理、编译、汇编、链接)、常用编译选项、优化级别
GCC编译选项
03
Makefile基础
Makefile语法规则、目标与依赖、变量定义与使用、伪目标
Make入门
04
Makefile进阶
自动变量、模式规则、函数使用(wildcard、patsubst)、条件判断
模式函数
05
Makefile实战
多目录工程组织、头文件依赖自动生成、增量编译优化
实战组织
06
CMake入门
CMake简介与安装、CMakeLists.txt基本语法、project与add_executable
CMake基础
07
CMake变量与缓存
内置变量、自定义变量、缓存变量、set与option命令
变量缓存
08
CMake目标管理
add_library、target_link_libraries、target_include_directories
目标链接
09
CMake生成器与构建类型
不同生成器(Unix Makefiles、Ninja)、Debug/Release配置
生成器类型
10
CMake条件与循环
if/elseif/else、foreach、while、函数与宏定义
逻辑宏
11
CMake模块与查找包
find_package机制、编写自定义Find模块、FetchContent
模块Fetch
12
CMake安装与导出
install命令、export与install(EXPORT)、包配置文件
安装导出
13
CMake多目录工程
add_subdirectory、目录作用域、变量传递
多目录作用域
14
CMake与第三方库
集成Boost、OpenCV、Eigen等常见库
第三方集成
15
CMake测试支持
enable_testing、add_test、CTest集成
测试CTest
16
CMake与代码生成
configure_file、add_custom_command、add_custom_target
生成自定义
17
Ninja构建系统
Ninja简介、.ninja文件语法、与CMake配合使用
Ninja高效
18
Bazel构建系统入门
Bazel概念(Workspace、Package、Target)、BUILD文件编写
Bazel入门
19
Bazel规则与依赖
cc_binary、cc_library、deps属性、可见性控制
规则依赖
20
Bazel进阶
宏与规则自定义、Skylark语言基础、外部依赖管理
宏Skylark
21
Bazel测试与基准测试
cc_test、test_suite、benchmark集成
测试基准
22
Bazel多语言工程
C++与Python混合构建、Java与C++互调
多语言混合
23
构建系统对比与选型
Make vs CMake vs Bazel vs Meson,适用场景分析
对比选型
24
预编译头文件(PCH)
原理、GCC/Clang/MSVC中的PCH配置、CMake集成
PCH加速
25
分布式编译与缓存
CCache原理与配置、Distcc、Icecream、构建加速策略
缓存分布式
26
持续集成中的构建
GitHub Actions配置C++构建、GitLab CI、Jenkins Pipeline
CI自动化
27
交叉编译
概念介绍、CMake工具链文件编写、ARM交叉编译实战
交叉编译ARM
28
构建系统调试与优化
构建日志分析、构建时间分析(Ninja -t graph)、并行编译控制
调试优化
29
包管理器
vcpkg、Conan、Spack介绍与对比、CMake集成vcpkg
包管理vcpkg
30
现代C++工程最佳实践
项目结构规范、构建脚本组织、版本管理、文档生成(Doxygen)
最佳实践Doxygen