向规则添加依赖项,而不将依赖项附加到总列表

时间:2014-11-02 21:20:50

标签: linker makefile dependencies

我正在为嵌入式系统开发,这意味着我必须使用链接描述文件。这没什么大不了的。我从以下Make规则开始,将所有内容链接在一起:

$(RELEASETARGET) : $(OFILES)
    $(LD) -Tlinker_script.ld --entry ResetISR --gc-sections $(LIBDIR) -o $@ $^ $(LIB)

如您所见,此行包含错误:linker_script.ld是此规则的依赖项,但在依赖项中未提及。但是如果我只是将它添加到deps的末尾:

$(RELEASETARGET) : $(OFILES) linker_script.ld
    $(LD) -Tlinker_script.ld --entry ResetISR --gc-sections $(LIBDIR) -o $@ $^ $(LIB)

它也会在-o之后添加到列表中,程序将无法在设备上运行。

这些警告都不是有害的,但我喜欢没有它们。简单地删除-Tlinker_script.ld部分并且只将脚本添加到依赖项列表中是不可能的:然后配置将无法正确加载,程序将无法在设备上运行。

那么,如何在不将其添加到.o文件列表的情况下添加此依赖项?

1 个答案:

答案 0 :(得分:0)

最简单的解决方案是使用$(OFILES),正如@Banthar所提到的那样。如果您不想这样做,可以使用filter仅返回目标文件:

$(LD) ... -o $@ $(filter %.o,$^) $(LIB)