我想通过配方设置一个全局变量,然后在另一个独立配方中引用该变量
以下代码是一个示例代码,用于设置配方中的变量,但如果在配方外引用,变量将保留初始值
ACTIVE = a
switch:
ifeq ($(ACTIVE),b)
ACTIVE=$(shell echo 'a')
else
ACTIVE=$(shell echo 'b')
endif
print:
$(info acitve = $(ACTIVE))
我知道有办法将目标特定变量的值广播到依赖目标,但这不是我想要的。
答案 0 :(得分:1)
你可以使用$(eval ...)
,虽然这几乎总是一个坏主意。我必须假设你的真实情况要复杂得多,因为有很多更好的方法来实现你在样本makefile中实际提供的内容。
switch:
$(eval ACTIVE=$(if $(filter-out a,$(ACTIVE)),a,b))