考虑一个长长的makefile
,其中有许多目标,所有这些目标都是PHONY
(表示目标名称不代表一个现有的文件)。
我可以执行以下任一操作:
.PHONY: a
a:
do someting a
.PHONY: b
b:
do someting b
.PHONY: c
c:
do someting c
或者:.PHONY: a b c
a:
do someting a
b:
do someting b
c:
do someting c
第一种选项很麻烦,第二种选项容易出错,当未来的我添加一个目标并忘记将其声明为PHONY
时。
是否有一种标准方法将makefile
中的所有目标声明为PHONY
?
.PHONY: $(MAKECMDGOALS)
会使命令行中给出的目标成为虚拟目标,如果你的目标之间不存在依赖关系,这将对你有用。 - user2371524.PHONY
最初的目的一样使用它呢?也就是无论是否过时都会触发目标。关于Make的“整体思想”,你忘记提到“整体思想”的另一个部分……依赖管理。在我的情况下,这就是为什么我更喜欢使用Make而不是在shell脚本中重新编写(和调试)依赖逻辑。 - Shammel Lee