如何导出一个make目标规则中的变量,以便在另一个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语句中使用。我认为他们在不同的壳里运行,所以看不见。有办法做到这一点吗?

思考文件。创建喜欢的文件。使你的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 $@

最新更新