📜  makefile phony (1)

📅  最后修改于: 2023-12-03 15:17:31.310000             🧑  作者: Mango

Makefile Phony

在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中,我们定义了两个伪目标,即allclean。其中,all代表生成程序,clean代表清除生成的文件。这些规则并不代表实际的文件,而只是一些命令的组合。

我们在定义一个伪目标时,需要在目标名前加上.PHONY关键字,以告诉Makefile它是一个伪目标。事实上,在GNU Make中,所有不以文件名为目标的规则都被视为伪目标。

使用伪目标的好处在于,我们可以防止Makefile在同名文件存在时误判为需要更新。此外,我们也可以在不生成任何实际文件的情况下执行一些特定的命令,比如清理、测试等。