在 GNU makefile 中使用依赖项
Using dependencies in a GNU makefile
我对如何在我的 GNU makefile 中使用依赖项有疑问。
考虑以下生成文件:
// Building all my dependency files
$(OUTDIR)/%.dep: %.c
$(DPP) $(CPPFLAGS) $(DPPFLAGS) $(@:dep=o) $< $@
现在,我有这些依赖文件,其中包含指向 files/dependencies 的列表或“指针”。
然后我想根据这些依赖项(当它们发生变化时)创建我的目标文件。
我可以做以下事情吗:
$(OUTDIR)/%.o $(OUTDIR)/%.orc: %.c $(OUTDIR)/%.dep
$(AS) $(COMMONFLAGS) $(CPPFLAGS) $(ASFLAGS) -o $@ $<
然而,这是否意味着我将仅在我的 *.dep 文件实际更改时(不是那些依赖文件中列出的文件)才重建我的对象。
这是正确的做法吗?如果不是,那是什么?
我觉得我不是 using/understanding 这些依赖文件是如何被工具解释的。
依赖文件本身是makefile格式,输入到make,而不是gcc。要使用它们,您需要将它们包含在您的 makefile 中(如果尚未创建则忽略该文件):
-include $(wildcard *.dep)
唯一需要注意的是,它会在需要构建任何内容(包括“清理”)时构建 dep 文件,因此您需要在目标上设置包含条件:
ifneq ($(MAKECMDGOALS),clean)
-include $(wildcard *.dep)
endif
我对如何在我的 GNU makefile 中使用依赖项有疑问。
考虑以下生成文件:
// Building all my dependency files
$(OUTDIR)/%.dep: %.c
$(DPP) $(CPPFLAGS) $(DPPFLAGS) $(@:dep=o) $< $@
现在,我有这些依赖文件,其中包含指向 files/dependencies 的列表或“指针”。
然后我想根据这些依赖项(当它们发生变化时)创建我的目标文件。
我可以做以下事情吗:
$(OUTDIR)/%.o $(OUTDIR)/%.orc: %.c $(OUTDIR)/%.dep
$(AS) $(COMMONFLAGS) $(CPPFLAGS) $(ASFLAGS) -o $@ $<
然而,这是否意味着我将仅在我的 *.dep 文件实际更改时(不是那些依赖文件中列出的文件)才重建我的对象。
这是正确的做法吗?如果不是,那是什么?
我觉得我不是 using/understanding 这些依赖文件是如何被工具解释的。
依赖文件本身是makefile格式,输入到make,而不是gcc。要使用它们,您需要将它们包含在您的 makefile 中(如果尚未创建则忽略该文件):
-include $(wildcard *.dep)
唯一需要注意的是,它会在需要构建任何内容(包括“清理”)时构建 dep 文件,因此您需要在目标上设置包含条件:
ifneq ($(MAKECMDGOALS),clean)
-include $(wildcard *.dep)
endif