我想在makefile中找到所有与模式匹配的变量,并打印它们的值。所以我有:
$(foreach var,$(filter XX_%,$(.VARIABLES)), \
$(info $(var)=$($(var))))
好简单。但是,在某些地方,人们喜欢毒害变量...即:]
XX_FOO = $(error XX_FOO is deprecated, please use XX_FOOBAR instead)
这会导致我上面的代码段在尝试扩展变量时失败。我想知道是否有某种方法可以在扩展变量之前测试变量是否中毒...
您可以使用value
功能来避免解释变量。
顺便说一句,如果您提供一个实际的最小工作示例,这会有所帮助:上面有许多语法错误。
尝试一下:
errorpat := $$(error%
$(foreach var,$(filter XX_%,$(.VARIABLES)),\
$(info $(var) =$(if $(filter $(errorpat),$(value $(var))),\
$(value $(var)),\
$($(var)))))
这里errorpat
是与您的“中毒”变量匹配的过滤器模式。