gpt4 book ai didi

makefile - 在赋值时计算 Makefile 变量

转载 作者:行者123 更新时间:2023-12-02 14:15:19 29 4
gpt4 key购买 nike

在 Makefile 中,我尝试将 shell 命令的结果分配给变量:

TMP=`mktemp -d /tmp/.XXXXX`

all:
echo $(TMP)
echo $(TMP)

但是

$ make Makefile all

正在回显 2 个不同的值,例如:

/tmp/.gLpm1T
/tmp/.aR4cDi

在变量赋值时计算 mktemp 的语法是什么?

谢谢。

最佳答案

这取决于制作的味道。使用 GNU Make,您可以使用 :=而不是=

TMP:=$(shell mktemp -d /tmp/.XXXXX)

编辑 正如 Novelocrat 所指出的,=分配不同于 :=使用 = 分配的值将在替换期间进行评估(因此每次都会使用该变量),而 :=分配的变量的值将仅计算一次(在分配期间),因此,这些值在此之后是固定的。请参阅documentation GNU Make 的更详细解释。

为了使值在赋值后真正保持不变,它不应该包含任何可能对 shell 来说特殊的部分(make 调用它以实际运行更新规则等)。特别是,最好避免反引号。相反,使用 GNU make的内置shell功能和类似的来实现你的目标。

关于makefile - 在赋值时计算 Makefile 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1435861/

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