作者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