1. 特殊字符

  • * :表示目标文件的名称,不包含目标文件的扩展名。
  • + :表示所有的依赖文件,这些依赖文件之间以空格分开,按照出现的先后为顺序,其中可能包含重复的依赖文件。
  • < :表示依赖项中第一个依赖文件的名称。
  • ? : 依赖项中,所有目标文件时间戳晚的文件(表示修改过),依赖文件间以空格分开。
  • @ :目标项中目标文件的名称。
  • ^ :依赖项中,所有不重复的依赖文件,以空格分开。

2. 关键字

2.1 .Phony

.Phony 是一个特殊的工作目标,它后面的并不是一个实际文件名:只是在显式请求时执行命令的名字;而且肯定要视为未更新。使用 .Phony 的原因在于:

  • 避免和同名文件冲突(防止存在和 PHONY 执行目标的名称相同的文件)

  • 改善性能(已知 .Phony 目标并非是由其它文件生成的实际文件,make 会跳过隐含规则搜索)