作者lc85301 (pomelocandy)
看板C_and_CPP
標題Re: [問題] makefile的寫法問題
時間Thu Aug 22 08:33:25 2013
※ 引述《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