下面解釋make是如何工作的:當(dāng)遇到目標(biāo)體clean時,make先查看其是否有依賴體,因?yàn)閏lean沒有依賴體,所以make認(rèn)為目標(biāo)體是最新的而不執(zhí)行任何操作.為了編譯這個目標(biāo)體,必須輸入make
clean.
然而,如果恰巧有一個名為clean的文件存在,make就會發(fā)現(xiàn)它.然后和前面一樣,因?yàn)閏lean沒有依賴體文件,make就認(rèn)為這個文件是最新的而不會執(zhí)行相關(guān)命令.為了處理這類情況,需要使用特殊的make目標(biāo)體.PHONY.
.PHONY的依賴體文件的含義和通常一樣,但是make不檢查是否存在有文件名和依賴體中的一個名字相匹配的文件,而是直接執(zhí)行與之相關(guān)的命令.在使用了.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