下面解釋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
然而,如果恰巧有一個名為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