VIP20
本课程属于:006-Makefile构建 编程基础与工程化 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录 咨询 / 购买

Makefile工程编译效率提升指南

📚 共计 30 章节
01
Makefile基础
什么是Makefile,为什么需要它,一个最简单的Makefile示例。
入门核心
02
规则与依赖
目标、依赖、命令的写法,以及它们如何驱动编译。
依赖编译流
03
变量与赋值
=、:=、?=、+=的区别,以及如何用变量管理编译选项。
变量赋值
04
自动变量
$@、$<、$^、$? 等自动变量的妙用,减少重复代码。
自动变量简化
05
隐式规则
Make内置的编译规则,如何利用和覆盖它们。
内置覆盖
06
模式规则
使用%通配符编写通用规则,处理多文件编译。
通配符批量
07
函数基础
Makefile中的字符串处理函数(patsubst, wildcard, notdir等)。
字符串函数
08
文件名函数
dir, notdir, suffix, basename, addsuffix, addprefix等。
文件名路径
09
条件判断
ifeq, ifneq, ifdef, ifndef 实现条件编译。
条件分支
10
多目标编译
同时编译多个可执行文件或库文件。
多目标批量
11
伪目标
.PHONY的作用,避免与文件名冲突。
伪目标.PHONY
12
强制目标与空目标
.FORCE 和空目标文件的用法。
强制空目标
13
VPATH与vpath
管理源文件路径,让Makefile更整洁。
路径VPATH
14
嵌套Makefile
大型项目中如何递归调用子目录的Makefile。
递归子目录
15
export与环境变量
如何向子Makefile传递变量。
环境变量export
16
Makefile调试技巧
make -p, make -d, info/warning/error函数。
调试诊断
17
增量编译原理
Make如何判断文件是否需要重新编译。
增量时间戳
18
头文件依赖
自动生成.d文件,解决头文件修改后不重新编译的问题。
依赖.d
19
并行编译
make -j 的用法与注意事项,提升编译速度。
并行-j
20
缓存编译
ccache的集成,让重复编译飞起来。
ccache缓存
21
分布式编译
distcc的集成,利用多台机器编译。
distcc分布式
22
编译时间分析
使用make --debug或ninja分析编译瓶颈。
分析瓶颈
23
预编译头文件
PCH的使用,减少头文件解析时间。
PCH预编译
24
链接优化
增量链接、链接时优化(LTO)的Makefile配置。
LTO链接
25
库的编译
静态库(.a)与动态库(.so)的Makefile写法。
静态库动态库
26
安装与卸载
make install / make uninstall 的规范写法。
installuninstall
27
测试集成
在Makefile中集成单元测试(make test)。
测试make test
28
清理与维护
make clean, make distclean, make mrproper 的层次。
清理维护
29
跨平台编译
通过变量控制不同平台(Linux/macOS/Windows)的编译。
跨平台条件
30
综合实战
一个完整的中型C++项目的Makefile,整合所有优化技巧。
实战完整项目