下面解释make是如何工作的:当遇到目标体clean时,make先查看其是否有依赖体,因为clean没有依赖体,所以make认为目标体是最新的而不执行任何操作.为了编译这个目标体,必须输入make
clean.
然而,如果恰巧有一个名为clean的文件存在,make就会发现它.然后和前面一样,因为clean没有依赖体文件,make就认为这个文件是最新的而不会执行相关命令.为了处理这类情况,需要使用特殊的make目标体.PHONY.
.PHONY的依赖体文件的含义和通常一样,但是make不检查是否存在有文件名和依赖体中的一个名字相匹配的文件,而是直接执行与之相关的命令.在使用了.PHONY之后,前面的例子如下:
howdy:
howdy.o helper.o helper.h
gcc howdy.o helper.o -o howdy
helper.o:
helper.c helper.h
gcc -c helper.c
howdy.o: howdy.c
gcc -c
howdy.c
hello: hello.c
gcc hello.c -o hello
all: howdy
hello
.PHONY : clean
clean:
rm howdy hello *.o