- 論壇徽章:
- 3
|
回復 #1 caocao152 的帖子
C 源碼的開頭經常有一系列被包含的頭文件,例如 stdio.h。有一些是系統(tǒng)級的頭文件,有一些是你正在寫的項目的頭文件:
#include <stdio.h>#include "foo.h"int main(....
要確定在你的 foo.h 被改變之后,這個文件也會被重新編譯,就要在你的 Makefile 這樣寫:
foo: foo.c foo.h
當你的項目變得越來越大,你自己的頭文件越來越多的時候,要追蹤所有這些頭文件和所有依賴它的文件會是一件痛苦的事情。如果你改變了其中一個頭文件,卻忘了重新編譯所有依賴它的源文件,結果會是很失望的。
這就是depend 的作用,如果不使用這個功能, 則當你修改一個頭文件時, 必須重新把所有的源文件都編譯一次, 使用depend ,就可只編譯包含此頭文件的源文件,可大大節(jié)省時間。
gcc 有一個選項可以分析你的源文件然后產生一個頭文件的列表和它的依賴關系: -MM。
如果你把下面的內容加到你的 Makefile 里面:
depend: gcc -E -MM *.c > .depend
然后運行 make depend,就會產生一個 .depend,里面包含了目標文件,C 文件和頭文件的列表:
foo.o: foo.c foo.h
如果你改變了 foo.h,下一次運行 make 的時候,所有依賴 foo.h 的文件就會被重新編譯。
每一次你增加一個頭文件的時候,別忘了運行一次 make depend。 |
|