不确定标题是否有意义......所以我会详细说明一下。
我正在玩弄这个使用 gcc 的自动依赖列表生成器的 makefile。
同时,我想保持一个良好的排序目录结构,将源、标头和资源分开。
布局很好很简单,就像这样
- 主要的
- 源代码
- 包括
- 对象
- 依赖关系
现在,makefile 依赖列表生成器 atm 是这样的:
$(DEP_PATH)%.d : $(SRC_PATH)%.c
@${CC} $(CFLAGS) -MM -c $(INCLUDE) $< > $(DEP_PATH)$*.d
include $@
这里的想法是我们生成依赖规则,然后将其包含到 make 构建中。
foo1.o 的结果是:
foo1.o: src/foo1.c include/foo1.h include/foo2.h include/foo3.h
如果我将所有对象标记为在主目录中找到,这将正常工作......但是因为它们在 /main/objects 中...... make 说它找不到 /main/objects/foo1 的规则。 ○
现在,我尝试了这个:
@echo "$(OBJ_PATH)" > $(DEP_PATH)$*.d
@${CC} $(CFLAGS) -MM -c $(INCLUDE) $< >> $(DEP_PATH)$*.d
> 将对象路径提供给新/覆盖的文件,然后将 GCC 自动依赖规则生成连接到它......但它在两组之间添加了换行符。
我也尝试使用所述信息对两个单独的文件进行分类......但他们也得到了换行符。
有没有一种好方法可以在不添加换行符的情况下添加依赖文件?
另外,如果您有关于 makefile、cat 和 echo 的任何真正好的教程,我将不胜感激。
感谢您的所有回复。