名称中包含目标文件的 GNU Makefile 默认值变量

GNU Makefile default value variables with target files in their name

我正在尝试向 U-Boot 项目的 Makefile 添加一个变量。 在大多数目标中,该值不需要重新定义,可以保留默认值 /dev/null 但对于某些目标,需要将其定义为另一个值。

我能够完成该任务的第二部分,但遗憾的是我无法为未定义该变量的目标设置默认值。

MKIMAGEOUTPUT_$(@F) ?= /dev/null

quiet_cmd_mkimage = MKIMAGE $@
cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
    $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT_$(@F)))

不,我只有几个目标需要覆盖 /dev/null 的值。 我通过添加以下行来实现这一点。

MKIMAGEOUTPUT_SPL = SPL.log

但对于所有其他目标,MKIMAGEOUTPUT_target 变量为空。 有人可以帮助我吗?

抱歉,我只是自己找到了解决方案。 以下几行是我想要的。

MKIMAGEOUTPUT ?= /dev/null

quiet_cmd_mkimage = MKIMAGE $@
cmd_mkimage = $(objtree)/tools/mkimage $(MKIMAGEFLAGS_$(@F)) -d $< $@ \
    $(if $(KBUILD_VERBOSE:1=), >$(MKIMAGEOUTPUT))

加上目标特定值:

SPL: MKIMAGEOUTPUT = SPL.log