Makefile 为什么GNU Make每次扩展这个变量时都要重新运行我的shell命令?

Makefile 为什么GNU Make每次扩展这个变量时都要重新运行我的shell命令?,makefile,gnu-make,variable-expansion,Makefile,Gnu Make,Variable Expansion,我使用OpenSSL在GNU Makefile中生成一些随机数据: RANDOM_DATA=$(shell /usr/bin/openssl rand -hex 32) 我希望能够在脚本的其他地方多次使用此随机_数据。但是,每次引用它时,它都会重新运行命令并返回新数据。例如,配方中的以下行输出不同的值: echo ${RANDOM_DATA} echo ${RANDOM_DATA} echo ${RANDOM_DATA} 为什么会出现这种情况?我如何防止它?在询问几分钟后找到了答案 根据,我

我使用OpenSSL在GNU Makefile中生成一些随机数据:

RANDOM_DATA=$(shell /usr/bin/openssl rand -hex 32)
我希望能够在脚本的其他地方多次使用此随机_数据。但是,每次引用它时,它都会重新运行命令并返回新数据。例如,配方中的以下行输出不同的值:

echo ${RANDOM_DATA}
echo ${RANDOM_DATA}
echo ${RANDOM_DATA}

为什么会出现这种情况?我如何防止它?

在询问几分钟后找到了答案

根据,我需要使用
:=
而不是
=
来强制变量在定义时展开一次,而不是递归展开