2016-11-04 116 views
0

我的makefile運行但它不執行清除目標文件和可執行文件,如rm -f $(PROJECT) $(OBJ)所指定。如果有人能告訴我我做錯了什麼,我將不勝感激。謝謝。makefile運行但不清除目標文件和可執行文件

的makefile

PROJECT = cfind 
HEADERS = $(cfind.h) 
OBJ = argv.o globals.o main.o pathInfo.o 

C99 = cc -std=c99 
CFLAGS = -Wall -pedantic -Werror 

$(PROJECT) : $(OBJ) 
    $(C99) $(CFLAGS) -o $(PROJECT) $(OBJ) 

%.o : %.c $(HEADERS) 
    $(C99) $(CFLAGS) -c $< 

clean: 
    rm -f $(PROJECT) $(OBJ) 
+1

你使用什麼命令來運行makefile?如果它不是「乾淨」,爲什麼它應該達到這個目標? –

+0

@DavidSchwartz我從來不知道。我只是使用'make'命令。我的道歉 - 這是我第一次使用makefile。感謝您的幫助。 –

+1

'make'系統的主要目標之一就是隻運行需要運行的目標來指定目標。 –

回答

1

當您執行make,它使任何目標,你告訴它做。除非你告訴它製作目標,或者該目標是你所做的目標的依賴,否則它不會達到目標。 makefile和指定依賴關係(而不僅僅是使用構建腳本)的主要目的是僅執行所需的操作。默認情況下,make成爲makefile中的第一個目標。

我認爲你錯過了makefile的全部觀點以及你指定依賴關係的原因。你有$(PROJECT) : $(OBJ)的原因是,它知道如果目標文件沒有改變,它不必製作目標。

即使沒有任何變化,您爲什麼要重建項目?