📅  最后修改于: 2023-12-03 15:17:31.310000             🧑  作者: Mango
在Makefile中,phony指的是伪目标。它们并不代表一个真正的目标,而是代表某些命令或一系列规则,它们不会生成任何实际的输出文件。
下面是一个简单的Makefile的例子,其中包含了一些伪目标:
.PHONY: all clean
all: program
program: main.o func1.o func2.o
gcc -o program main.o func1.o func2.o
main.o: main.c
gcc -c main.c
func1.o: func1.c
gcc -c func1.c
func2.o: func2.c
gcc -c func2.c
clean:
rm -f *.o program
在这个Makefile中,我们定义了两个伪目标,即all
和clean
。其中,all
代表生成程序,clean
代表清除生成的文件。这些规则并不代表实际的文件,而只是一些命令的组合。
我们在定义一个伪目标时,需要在目标名前加上.PHONY
关键字,以告诉Makefile它是一个伪目标。事实上,在GNU Make中,所有不以文件名为目标的规则都被视为伪目标。
使用伪目标的好处在于,我们可以防止Makefile在同名文件存在时误判为需要更新。此外,我们也可以在不生成任何实际文件的情况下执行一些特定的命令,比如清理、测试等。