如何在一个make目标规则中导出变量以在另一个make目标中使用

时间:2016-09-14 18:26:00

标签: gnu-make

我有以下示例代码来说明我要做的事情:

rulea:
    $(info $$var1 [rulea] is [${var1}])
    $(eval export var1 = true)
    $(info $$var1 [rulea] is [${var1}])

ruleb: rulea
    $(info $$var1 ruleb is [$(var1)])
    ifeq ($(value var1),true)
    $(info TEST9 $$var1 [ruleb] is [${var1}])
endif

var1可以打印在ruleb中,但不能在ifeq语句中使用。我认为它们在不同的壳中运行,因此无法看到它们。有没有办法实现这一目标?

1 个答案:

答案 0 :(得分:0)

思考文件。 制作喜欢的文件。 保持您的makefile平行安全(使用 make 的整点)。

rulea:
    Some other stuff...
    echo ${var1} >$@

ruleb: rulea
# Here the file ruleb (or more conveniently, $<) has what you want
    command-that-needs-var1 -i $< -o $@