有关Makefiel的问题
有个问题困扰着我好久了!
在写Makefile的时候,生成点O文件后的依赖文件一定都要写吗?特别是头文件(自己写的头文件)都要列表出来吗?
如果我的头文件中还引用了另外一个头文件呢?又怎么写?
如:
main.c文件
#include"tanghui.h"
tanghui.h文件
#include"th.h"
.
.
.
.
.
是这样的依赖关系,我的Makefile怎么写呢?
请高手指点一下!
[解决办法]
这个不需要手动去一个个的加;可以利用gcc 的机制自动生成依赖关系。
可以参考下面的makefile(假定main.c, tanghui.h, 以及 makefile 在同一个目录):
- C/C++ code
vpath = .CPPFLAGS = -I .SOURCES = main.cmain : main.cinclude $(subst .c,.d,$(SOURCES))%.d: %.c $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$
[解决办法]
刚才在我的机器上试了一下,上面那个makefile会有错误,改成下面的就可以了:
- C/C++ code
vpath = .CPPFLAGS = -I .SOURCES = main.cmain : main.omain.o : main.cinclude $(subst .c,.d,$(SOURCES))%.d: %.c $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$