Makefile 中 .PHONY 的用途是什么?
默认情况下,Makefile 目标是“文件目标”——它们用于从其他文件构建文件。Make 假设它的目标是一个文件,这使得编写 Makefiles 相对容易:
foo: bar create_one_from_the_other foo bar
但是,有时您希望 Makefile 运行不代表文件系统中物理文件的命令。很好的例子是常见的目标“干净”和“全部”。情况并非如此,但您可能clean在主目录中有一个名为的文件。在这种情况下,Make 会感到困惑,因为默认情况下,clean目标将与此文件相关联,并且 Make 只会在文件的依赖项似乎不是最新的情况下运行它。
clean
这些特殊目标被称为假的,您可以明确告诉 Make 它们与文件无关,例如:
.PHONY: clean clean: rm -rf *.o
即使make clean您确实有一个名为clean.
make clean
就 Make 而言,虚假目标只是一个总是过时的目标,因此无论何时询问make <phony_target>,它都会运行,与文件系统的状态无关。一些常见make的虚假目标是:all, install, clean, distclean, TAGS, info, check.
make <phony_target>
make
all
install
distclean
TAGS
info
check