作者ckaha (★閃亮數學推理★)
看板EE_DSnP
標題Re: [問題] 關於 .c 變成.o的問題
時間Thu Mar 6 00:06:56 2008
※ 引述《ric2k1 (Ric)》之銘言:
: ※ 引述《ckaha (★閃亮數學推理★)》之銘言:
: : 作業中
: : a.cpp 需要 include a.h b.h
: : b.cpp 需要 include b.h
: : main.cpp 需要 include a.h
: : 那我可以先用
: : a.cpp + a.h -> a.o
: : b.cpp + b.h -> b.o
: : main.cpp -> main.o
: : 然後將他們再一起組合成一個執行檔
: : 因為我是這樣想的
: : 不管如何包含a.h b.h
: : 終究我都會把他們三個兜在一起
: : 所以程式執行的時候他都找的到
: : 這樣想可以嗎?
: : 還是哪裡有錯呢?
: 你是指在 .cpp 檔的 include, 還是在 makefile 裏的 dependency list?
: 如果是前者, 不行, 會有 "undefined" symbol 的 compilation error.
: 如果是後者, OK, 但是由於 dependency list 不完全, 會造成比方說 .h file 被更新
: 但是 make 卻說 target is up to date.
那請問接 make的問題
當我使用SUFFIXES
.cpp.o:
cc -c @<
這段話如果對於a.cpp 是等價於
a.o : a.cpp a.h b.h
cc -c a.cpp
還是
a.o : a.cpp a.h
cc -c a.cpp
呢?
我現在已經知道如果用make的確是可以少寫b.h
可是這樣很奇怪 他這樣make的時候還是會去抓到 b.h?
那dependency list 的物件只是執行時的必要條件 而非充分嘛??
--
Every thing can be w
rong unless you can proof it is
true.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.225.134.174
1F:推 bnsblue:我想是因為dependency list只是要確保檔案存在才寫的 03/06 09:01
2F:→ bnsblue:並不是compile的時候會自動幫你抓進來compile 03/06 09:11
3F:→ bnsblue:簡單說,如果你compile的指令是對的,檔案也都放對位置 03/06 09:13
4F:→ bnsblue:就算dependency list不寫也沒關係 03/06 09:14
5F:推 timrau:dependency list是check檔案新舊用的..... 03/06 12:13