makefile 学习之路16 - makefile 的隐式规则(下)

声明: 本文写于 狄泰软件学院 makefile课程 学后总结

 深入理解隐式规则

 - 当 make 发现目标的依赖不存在时

        尝试通过依赖名逐一查找隐式规则

        并且通过依赖名推导可能需要的源文件

 - 编译效率低下

        make从隐式规则和自定义规则中选择最终使用的规则

 

隐式规则链

当依赖的目标不存在时, make 会极力组合各种隐式规则对目标进行创建,进而产生意料之外的编译行为!

 

如何查看隐式规则

makefile 学习之路16 - makefile 的隐式规则(下)

 隐式规则的禁用

  • 局部禁用

在 makefile 中自定义会泽

在 makefile 中定义模式 (如: %.o : %.p)

  • 全局禁用

make -r

 makefile 学习之路16 - makefile 的隐式规则(下)

 

makefile 学习之路16 - makefile 的隐式规则(下)

关于后缀规则的注意事项

  •  后缀规则中不允许有依赖
  • 后缀规则必须要有命令,否则无意义
  • 后缀规则将逐步被模式规则取代

 小结

  • 隐式规则可能造成意想不到的编译行为

  • 在实际的工程项目中尽量不使用隐式规则

  • 后缀规则是一种旧的模式规则

  • 后缀规则正逐步被模式规则取代