gpt4 book ai didi

makefile - make-在同一个eval调用中定义多个变量

转载 作者:行者123 更新时间:2023-12-05 00:55:25 27 4
gpt4 key购买 nike

我想使用makeeval函数在foreach内定义几个(动态命名的)变量,但是我无法获得eval来完成此工作。

我尝试过这样的事情:

$(eval \
var1 = val1 \
var2 = val2 \
)

它不起作用:将 var1定义为 val1 var2 = val2,但未定义 var2。这是有道理的,因为我将 \放在第二行的末尾。但是,如果我删除它, eval调用将永远不会终止。

我尝试了其他方法,使此 \仅被 eval看到,但是没有任何效果。因此,出现了一个问题:是否可以在同一 eval调用中定义多个变量?

当然,我可以调用 eval两次...这很好奇。

最佳答案

分隔每个变量定义的是换行符,您要用反斜杠将其转义。由于您不能将其直接放在eval函数中,因此您必须对其进行定义并将其像这样用于eval:

define newline


endef

然后,如果将以下行放置在目标中:
$(eval FOO=abc$(newline)BAR=def)
@echo FOO : $(FOO) BAR : $(BAR)

您将得到以下结果:

FOO : abc BAR : def



请注意,如果要在第二个变量的定义中使用变量,则必须像这样转义$字符:
$(eval FOO=abc$(newline)BAR=def$$(FOO))
@echo FOO : $(FOO) BAR : $(BAR)

结果最终将是:

FOO : abc BAR : defabc



这是由于以下事实:在 eval实际开始工作之前(在此处添加了换行符),存在第一级解释,但是我们希望仅在真正的 eval工作期间对变量进行解释,即当变量被定义,这就是为什么我们需要一个双$符号。

关于makefile - make-在同一个eval调用中定义多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38224102/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com