My previsou question for sub-folder makefile
TOPDIR
|
├── a
│ ├── a.c
│ └── a.h
├── b
│ ├── b.c
│ └── b.h
├── c
│ ├── c.c
│ └── c.h
├── include
│ └── common.h
├── root
│ └──main.c
└── Makefile
上面是我的项目文件树视图,我写了一些makefile
但似乎它有问题:
你可以根据TOP链接找到我之前的makefile
,现在我想改变我的makefile
风格,我希望实现以下目标:
makefile
中只有一个TOPDIR
,makefile
可以先在项目树下获取所有源文件,然后进行编译。
我需要生成一个良好的依赖关系,这样,它可以帮助确定我是否在重新编译期间更新了一些头文件
有任何建议或示例吗?
答案 0 :(得分:0)
我建议使用依赖关系生成工具,例如makedepend(http://en.wikipedia.org/wiki/Makedepend)或gcc(http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Preprocessor-Options.html#Preprocessor-Options)的-M选项之一,如果您使用它生成依赖文件,然后从makefile中包含该文件。理想情况下,每个输出文件都有一个依赖文件,并且依赖文件列表既包含输出文件的依赖关系,也包括输出文件的依赖关系(即每行对目标文件重复一次,对依赖文件重复一次)。这样,您的依赖项文件将在必要时自动重新生成。像这样:
SOURCES=#...
DEPS=$(addprefix .dep/,$(addsuffix .mk,$(SOURCES))
-include $(DEPS)
.dep:
mkdir .dep
.dep/%.mk: | .dep
# Rule for generating the .dep/foo.c.mk, which holds both dependencies for
# foo.c and .dep/foo.c.mk