我遇到过很多次:.PHONY
在文件末尾,Makefile
想知道它是什么意思。我用过Makefiles
但从来不需要添加它。
我现在发现的一个具体例子:
.PHONY: \
all \
test \
clean \
release
我遇到过很多次:.PHONY
在文件末尾,Makefile
想知道它是什么意思。我用过Makefiles
但从来不需要添加它。
我现在发现的一个具体例子:
.PHONY: \
all \
test \
clean \
release
将来自Stack Overflow 的George Y.的回答翻译成 Makefile 中 .PHONY 的目的是什么?. 解释很简单,也很好。
假设您有“安装”目标,这在 makefile 中很常见。如果你不使用
.PHONY
,并且在 Makefile 的同一目录中有一个名为“install”的文件,那么该命令make install
将不会执行任何操作。发生这种情况是因为 Make 将规则解释为“执行这个和这个配方以创建名为 install 的文件”。由于文件已经存在,并且依赖项没有更改,因此不会发生任何事情。但是,如果您将“安装”目标设置为 PHONY,您将告诉工具
make
该目标是虚拟的,并且make
它不应该创建该文件。因此它不会检查“安装”文件是否存在,这意味着:stat()
不会被调用通常,Makefile 中所有不生成与目标名称同名的输出文件的目标都应该是 PHONY 类型。这通常包括
all
,install
,clean
,distclean
等。以下来自Eli Bendersky创建的同一问题的答案示例应该更清楚。
这些特殊目标称为 PHONY,您可以明确告诉 Make 它们与文件无关,例如: