我要覆盖Makefile中变量的将来分配。
在下面的代码段中,我希望为DEFCONFIG
分配$(src)/board/$(BOARD)/defconfig
,而忽略了进一步的分配。
ifdef BOARD && $(BOARD) == "abc"
DEFCONFIG := $(src)/board/$(BOARD)/defconfig
endif
如果任何其他makefile重新定义了DEFCONFIG,则该值无效。 我该怎么办?
答案 0 :(得分:0)
如果任何其他makefile重新定义
DEFCONFIG
,则该值无效。我该怎么办?
然后不要在其他makefile中重新定义它。
实现该目标的一种方法是分配一个特定于Makefile的变量,而不是分配给相同的变量DEFCONFIG
:
DEFCONFIG.$(BOARD) := $(src)/board/$(BOARD)/defconfig
DEFCONFIG.def := ...
DEFCONFIG.xyz := ...
DEFCONFIG := ${DEFCONFIG.abc}
答案 1 :(得分:0)
如果任何其他makefile重新定义了DEFCONFIG,则该值无效。我该怎么办?
由于您似乎正在使用GNU make
,因此可以使用?=
运算符来分配其值。如果对该变量的所有赋值一致地执行此操作,则只有处理的第一个赋值才有效(如果变量从环境中获取值,则它们都不起作用)。
答案 2 :(得分:0)
在GNU中,您可以使用override
关键字。
override DEFCONFIG := $(src)/board/$(BOARD)/defconfig
由于override
的优先级最高,因此只能由另一个override
覆盖。
但是,如果您必须使用它,则项目中肯定存在一些缺陷。