2011-05-27 92 views
0

這裏是我的makefile爲什麼makefile每次都會重新編譯一個類?

all: main.o fileparam.o 
     g++ -g $(LIBPATH) $(LIBS) file_parameters.o main.o -o test 
main.o: main.cpp 
     g++ -g -Wall $(INCPATH) main.cpp -c 

fileparam.o: file_parameters.cpp file_parameters.h 
     g++ -g -Wall file_parameters.cpp -c 

$(LIBPATH)$(LIBS)將包含指向庫和$(INCPATH)指向其它包含文件

出於某種原因,重新編譯file_parameters.o每當我製作節目時,我想知道我搞砸了什麼。謝謝!

編輯:它不會每次都重新編譯main.o

回答

2

此:

fileparam.o: file_parameters.cpp file_parameters.h 
     g++ -g -Wall file_parameters.cpp -c 

應該是:

file_parameters.o: file_parameters.cpp file_parameters.h 
     g++ -g -Wall file_parameters.cpp -c 

此外,呼喚你的輸出文件test可能會引起混淆 - 變化它到mytest

+0

這是我今天欠你的兩次......非常感謝! – mrswmmr 2011-05-27 15:59:48

1

它是因爲你的目標fileparam.o不是由規則生成的...而是你正在生成file_parameters.o。使看到目標不存在,所以它必須建立它。

+0

此外,您可能會將目標「全部」更改爲「測試」,因爲該規則會創建「測試」。如果你不這樣做,每次運行make時都會重新鏈接。 – mah 2011-05-27 15:59:37

相關問題