首页 > 解决方案 > 在 GNU makefile 中使用依赖项

问题描述

我对如何在我的 GNU makefile 中使用依赖项有疑问。
考虑以下 make 文件:

// Building all my dependency files
$(OUTDIR)/%.dep: %.c
    $(DPP) $(CPPFLAGS) $(DPPFLAGS) $(@:dep=o) $< $@

现在,我有这些依赖文件,其中包含指向文件/依赖项的列表或“指针”。

然后,我想根据这些依赖项(当它们更改时)创建我的目标文件。
我可以做以下事情:

$(OUTDIR)/%.o $(OUTDIR)/%.orc: %.c $(OUTDIR)/%.dep
   $(AS) $(COMMONFLAGS) $(CPPFLAGS) $(ASFLAGS) -o $@ $<

然而,这是否意味着我将仅在我的 *.dep 文件实际更改(而不是那些依赖文件中列出的文件)时重建我的对象。这是正确的做法吗?如果不是,那是什么?
我觉得我没有使用/理解这些依赖文件是如何被工具解释的。

标签: makefiledependenciesgnu

解决方案


依赖文件本身是 makefile 格式,并且是 make 的输入,而不是 gcc。要使用它们,您需要将它们包含在您的 makefile 中(如果该文件尚未创建,则忽略该文件):

-include $(wildcard *.dep)

唯一需要注意的是,它会在需要构建任何内容时构建 dep 文件,包括“make clean”,因此您需要使包含条件以目标为条件:

ifneq ($(MAKECMDGOALS),clean)
-include $(wildcard *.dep)
endif

推荐阅读