看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《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 wrong unless you can proof it is true. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.225.134.174
bnsblue:我想是因為dependency list只是要確保檔案存在才寫的 03/06 09:01
bnsblue:並不是compile的時候會自動幫你抓進來compile 03/06 09:11
bnsblue:簡單說,如果你compile的指令是對的,檔案也都放對位置 03/06 09:13
bnsblue:就算dependency list不寫也沒關係 03/06 09:14
timrau:dependency list是check檔案新舊用的..... 03/06 12:13