目录
1.深入理解隐士规则
- 当make发现目标的依赖不存在时
尝试通过依赖名逐一查找隐士规则
并且通过依赖名推导可能需要的源文件
2.隐士规则的副作用
- 编译行为难以控制
大量使用隐士规则可能产生意想不到的编译行为
- 编译效率低下
make从隐士规则和自定义规则中选择最终使用的规则
3.隐士规则链
当依赖的目标不存在时,make会极力组合各种隐士规则对目标进行创建,进而产生意料之外的编译行为!
例:
需要名为N.o的目标:
4.问题
make提供了多少隐士规则?如何查看隐士规则?
5.查看隐士规则
- 查看所有:make –p
- 查看具体规则:make –p |grep “XXX”
6.隐士规则的禁用
- 局部禁用
在makefile中自定义规则
在makefile中定义模式(如:%.o:%.p)
- 全局禁用
make -r
7.后缀规则简介
- 后缀规则是旧式的模式规则
- 可以通过后缀描述的方式自定义规则
8.双后缀规则
- 定义一对文件后缀(依赖文件后缀和目标文件后缀)
9.单后缀规则
- 定义单个文件后缀(源文件后缀)
10.关于后缀规则的注意事项
- 后缀规则中不允许有依赖
- 后缀规则必须有命令,否则无意义
- 后缀规则将逐步被模式规则取代
11.小结
- 隐士规则可能造成意想不到的编译行为
- 在实际工程项目中尽量不使用隐士规则
- 后缀规则时一种旧式的模式规则
- 后缀规则正逐步取代被模式规则取代