- 论坛徽章:
- 0
|
初写makefile问题还不少,这次是关于dependancy的,问题比较初级,大家帮我看看。
比如,我有若干source file和header file:
/* Makefile */
SRCS = a_file1.c a_file2.c \
b_file1.c b_file2.c
HEADERS = common.h \
a_file1.h a_file2.h \
b_file1.h b_file2.h
OBJS = $(SRCS: .c=.o)
现在的问题是如何对这些object:a_file1.o, a_file2.o, b_file1.o, b_file2.o 建立他们对应的dependancy。源文件和头文件的包含关系如下:
a_file1.c : a_file1.h common.h
a_file2.c : a_file2.h common.h
b_file1.c : b_file1.h
b_file2.c : b_file2.h
b_file1.h : a_file1.h common.h // b_file1.h 又包含了两个头文件
一个最简单的方法是一个一个列举每个object的dependancy:
a_file1.o : a_file1.h common.h
a_file2.o : a_file2.h common.h
b_file1.o : b_file1.h a_file1.h common.h
b_file2.o : b_file2.h
但是这种方法在有上千上万个文件的project时,会显得很难维护。我相信linux的makefile一定不是这样写的。那么有没有什么方便一点的方法呢?大家能不能告诉我你们是怎么来写这些依赖关系的,我总觉得这么一个一个加太麻烦了,不是正确的方法。
我们知道,编译器在编译每个源文件时,它会搜索每个该文件包含的头文件,这就相当于帮我们找到了该文件所依赖的头文件了,我们还要在makefile里再写一遍好像有点笨,能不能把这些信息拿出来自动生成在makefile里呢?这样就不用手动的来维护这些依赖关系了,在维护上万个文件的project时也能节约很多时间?
谢谢! |
|