Makefile在目标体中设置全局变量

时间:2018-05-25 08:59:53

标签: makefile

我想通过配方设置一个全局变量,然后在另一个独立配方中引用该变量

以下代码是一个示例代码,用于设置配方中的变量,但如果在配方外引用,变量将保留初始值

ACTIVE = a

switch:
ifeq ($(ACTIVE),b)
    ACTIVE=$(shell echo 'a')
else
    ACTIVE=$(shell echo 'b')
endif

print:
    $(info acitve = $(ACTIVE))

我知道有办法将目标特定变量的值广播到依赖目标,但这不是我想要的。

1 个答案:

答案 0 :(得分:1)

你可以使用$(eval ...),虽然这几乎总是一个坏主意。我必须假设你的真实情况要复杂得多,因为有很多更好的方法来实现你在样本makefile中实际提供的内容。

switch:
        $(eval ACTIVE=$(if $(filter-out a,$(ACTIVE)),a,b))