Makefile 中,一个目标可以出现在多个规则中。但是这些规
则必须是同一类型的规则,要么都是普通规则,要么都是双冒号规则。而不允许一个目
标同时出现在两种不同类型的规则中。双冒号规则和普通规则的处理的不同点表现在以
下几个方面:
1. 双冒号规则中,当依赖文件比目标更新时。规则将会被执行。对于一个没有依
赖而只有命令行的双冒号规则,当引用此目标时,规则的命令将会被无条件执
行。而普通规则,当规则的目标文件存在时,此规则的命令永远不会被执行(目
标文件永远是最新的)。
2. 当同一个文件作为多个双冒号规则的目标时。这些不同的规则会被独立的处理,
而不是像普通规则那样合并所有的依赖到一个目标文件。这就意味着对这些规
则的处理就像多个不同的普通规则一样。就是说多个双冒号规则中的每一个的
依赖文件被改变之后,make只执行此规则定义的命令,而其它的以这个文件作
为目标的双冒号规则将不会被执行。
Linux之Makefile(双冒号规则)
最新推荐文章于 2021-05-03 10:15:19 发布