如何将 shell 命令的输出分配给所有 make 目标的 Makefile 变量?
How to assign output of shell command to Makefile variable for all make targets?
我有一个随机字符串生成并用于多个 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
如何在 Makefile
的顶部设置 VALUE
以便仅对所有目标评估和设置一次而不是每次调用目标时?
$(MAKE) target_1
是一个递归的 make 调用,全新的 make
进程从顶部读取 Makefile
。
如果你真的想这样做,你可以将 VALUE=${VALUE}
传递给递归 make,它将优先于 :=
赋值,
$(MAKE) target_1 VALUE=${VALUE}
作为递归的替代方法,您可以使用依赖项一个接一个地调用规则,
target_0: target_1
...
我有一个随机字符串生成并用于多个 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
如何在 Makefile
的顶部设置 VALUE
以便仅对所有目标评估和设置一次而不是每次调用目标时?
$(MAKE) target_1
是一个递归的 make 调用,全新的 make
进程从顶部读取 Makefile
。
如果你真的想这样做,你可以将 VALUE=${VALUE}
传递给递归 make,它将优先于 :=
赋值,
$(MAKE) target_1 VALUE=${VALUE}
作为递归的替代方法,您可以使用依赖项一个接一个地调用规则,
target_0: target_1
...