我有以下示例代码来说明我要做的事情:
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 $@