我有一个随机字符串,该字符串已生成并用于多个make目标。我的Makefile
如下:
VALUE := $(shell strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n')
target_0:
echo ${VALUE}
$(MAKE) target_1
target_1:
echo ${VALUE}
我希望VALUE
在所有目标中都相同(设置一次,并在整个文件中引用其值),但是在我当前的实现中,我得到以下信息(值不同):
K29p6whTYtrNIrzkaNkF75qtc2YQEq
hcXH00hzYMRa36hp55wBKCRH0YfJvp
如何在VALUE
的顶部设置Makefile
,以便仅对所有目标进行评估和设置一次,而不是每次调用目标时都要对其进行设置?
答案 0 :(得分:1)
$(MAKE) target_1
是一个递归的make调用,是全新的make
流程,从顶部开始读取Makefile
。
如果您真的想这样做,可以将VALUE=${VALUE}
传递给递归make,它将优先于:=
分配,
$(MAKE) target_1 VALUE=${VALUE}
作为递归的一种替代方法,您可以使用依赖项在另一个规则之后调用一个规则,
target_0: target_1
...