01
Makefile基础
什么是构建系统 · 核心概念 · 目标与依赖 · Hello World
入门必备
02
Makefile语法精讲
变量定义 · 自动变量 · 隐式规则 · 模式规则
语法核心
03
跨平台构建挑战
Win/Linux/macOS差异 · 路径分隔符 · 编译器差异
跨平台对比
04
条件判断与平台检测
ifeq/ifneq/ifdef · 检测OS · 检测编译器
条件检测
05
函数与高级技巧
字符串/文件名函数 · foreach/call/wildcard · 自定义函数
函数进阶
06
多目录项目管理
VPATH/vpath · 递归与非递归Make · 模块化
结构模块
07
静态库与动态库构建
ar命令 · .so/.dll/.dylib · 链接顺序 · 依赖管理
库链接
08
编译选项管理
CFLAGS/CXXFLAGS/LDFLAGS · Debug/Release · 优化警告
选项配置
09
头文件依赖管理
自动生成依赖 · gcc -MM/-MD · 增量编译
依赖增量
10
并行构建与性能优化
make -j · .NOTPARALLEL · 作业服务器 · 时间分析
并行加速
11
安装与卸载目标
PREFIX变量 · DESTDIR · install/uninstall逻辑
部署目标
12
测试框架集成
test目标 · 单元测试 · 覆盖率 · CI脚本
测试CI
13
代码清理与维护
clean/distclean · .PHONY · gitignore配合
清理维护
14
版本号与自动更新
版本文件 · git describe · 自动生成version.h
版本自动
15
配置文件生成
configure脚本 · config.h.in · autoconf/cmake对比
配置生成
16
交叉编译支持
CC/AR/STRIP覆盖 · sysroot · 工具链 · 多架构
交叉嵌入式
17
包管理集成
pkg-config · .pc文件 · 查找第三方库 · 系统路径
包管理集成
18
子项目与依赖管理
git submodule · FetchContent · 外部项目 · 版本兼容
子项目依赖
19
Makefile模板化
通用模板 · 脚手架 · 代码生成 · cookiecutter
模板效率
20
文档生成集成
Doxygen · Sphinx · API文档 · README生成
文档自动化
21
代码风格检查
cpplint · clang-format · 静态分析 · pre-commit
风格检查
22
性能分析集成
gprof · perf · Valgrind · 火焰图
性能分析
23
容器化构建
Dockerfile · 多阶段构建 · CI/CD · 环境一致性
容器Docker
24
Windows特殊处理
MinGW vs MSVC · NMake兼容 · 路径转换 · DLL导出
Windows兼容
25
macOS特殊处理
Homebrew · Framework · 代码签名 · Universal Binary
macOS签名
26
大型项目实战
分层架构 · 模块依赖 · 构建加速 · 增量策略
实战大型
27
Makefile调试技巧
--debug · info/warning/error · 打印变量 · 追踪规则
调试技巧
28
性能调优实战
减少重新编译 · 缓存 · 分布式构建(distcc/ccache)
调优分布式
29
安全构建实践
编译器安全选项 · 链接器安全 · 漏洞扫描 · SBOM
安全SBOM
30
未来趋势与替代方案
Meson · Bazel · Ninja · Makefile演进 · 混合构建
趋势对比