看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Zoxge (Zoxge)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : Linux : 問題(Question): : makefile有個好處是可以自行判斷檔案有沒有被改過,沒改過就不必重編 : 有個問題想請教一下.. : http://www.study-area.org/cyril/opentools/opentools/makefile.html : 這個網頁的例子 : 如果有很多個.cpp檔 : 就必須要有每個.cpp對應的target : 例如command.cpp,就有command.o這個target : command.o :command.c command.h : $(CC) -o command.o command.c : 但問題來了,當.cpp檔有幾百幾千個,又想要能自行判斷每個檔案是否被改過 : 這樣寫makefile不就xxx.o這樣的target也得要寫幾百幾千個 = = : 請問有比較輕鬆的寫法嗎? : 謝謝大家 我的做法是利用gcc 自動比對的方式 其實就是B大所說的方法: %.o:%.cpp $(CXX) -c "$<" -o "$@" $(CXXFLAGS) $(INCLUDE) @$(MOVE) $@ $(LIBRARY_DIR) 在遇到.cpp的時候,會自動呼叫這行轉成.o 而一般好像比較建議單獨的.cpp檔編成一個.o -- ______ |\ / \ | \ / ● ● \ |__\ / ______ \ | /   \__/   \___| /______________\ | -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.45.131 ※ 編輯: lc85301 來自: 140.112.45.131 (08/22 09:07)
Zoxge:感謝 可以請問@$(MOVE) $@ $(LIBRARY_DIR)的目的是什麼嗎? 08/23 00:04
Zoxge:想借題問一下 預設build出來的.o會和makefile在同一個資料夾 08/23 00:06
Zoxge:如果我想把這些.o集中到某個資料夾統一放,該怎麼做呢? 08/23 00:06
LPH66:樓上可以參考我下一篇的寫法 08/23 01:08
LPH66:至於你問的那行 最前面的 @ 表示不顯示這行指令 08/23 01:22
LPH66:$@ 是這個指令的目標 ( : 左邊的東西) 08/23 01:22
LPH66:所以其實就是你在問的功能的一個寫法 編譯完後移去一個目錄 08/23 01:23
LPH66:另一個寫法就像我下一篇寫的直接在 pattern line 上寫資料夾 08/23 01:23
lc85301:我也覺得LPH大的寫法比較完整,看他的,這篇當垃圾 08/23 22:07