通過MakeFiles時,我發現當命名爲目標的文件即使不使用.PHONY時也存在,目標正在建立。 但是,當我對另一個目標進行相同的處理時,即清理時,目標沒有建立起來,並說「清理是最新的」,這是可以的。 我只想知道當文件存在於當前目錄時爲什麼另一個目標正在建立。如果在當前目錄中已經存在名爲目標的文件時沒有.PHONY目標
生成文件:
CC:= gcc
CCFLAGS:=-Wall -Wextra
hello: hellomake.o hellofunc.o
$(CC) $(CCFLAGS) hellomake.c hellofunc.c -o file
hellomake.o : hellomake.c
$(CC) $(CCFLAGS) -c hellomake.c
hellofunc.o : hellofunc.c
$(CC) $(CCFLAGS) -c hellofunc.c
clean:
rm -rf *.o
rm -rf file
我的當前目錄下的文件已命名相同的目標,如 「你好」。 它應該給結果爲「你好達最新的」,但它沒有這樣做,並給輸出: 讓你好
gcc -Wall -Wextra hellomake.c hellofunc.c -o file
請告訴這是爲什麼構建目標時目標不.phony和作爲目標命名的文件已經存在於當前目錄中。
如果'hellomake.c'或'hellofunc.c'比最新'hello'它會重建。運行'make hello'兩次,你可以在第二次看到它會給你好是uptodate – 2014-09-02 08:41:20
'我只是想知道爲什麼當文件存在於當前目錄時,其他目標正在建立'你應該檢查目標是否重建即使依賴關係沒有被修改。 – 2014-09-02 08:42:50
創建了我在makefile中使用的文件後,我在我的目錄中創建了「hello」文件。但即使沒有.PHONY,makefile也不會給出任何錯誤。通常,當與目標名稱相同的文件存在於當前目錄中時,它不應該運行目標的命令,不使用.PHONY,但在我的情況下,它是這樣做的。 :) – Mayank 2014-09-02 12:50:17