2
我想在Makefile中执行一个命令,将结果存储到一个变量中并稍后重新使用结果。在GNU和BSD Makefile中运行一个命令并将结果存储到一个变量中
在BSD Makefile中,我可以使用=运算符:
PASSWORD != openssl rand -base64 48
在GNU Makefile中,我可以使用shell功能:
PASSWORD := $(shell openssl rand -base64 48)
是否有这样写这样的方式这是与两个兼容的方式吗?
预期输出
在这两种情况下,命令的结果被分配给密码,所以我可以重用在生成文件相同的PASSWORD值:
quux:
@echo $(PASSWORD)
@echo $(PASSWORD)
如果我运行make quux
,这将输出两倍的相同的密码。
例如:
$ gmake quux
Y0ZrQQqLF9JK98x9UiIwWwcCN2Cq1wNqzph3ShG1RK0NeqbxWn6p4XB5zgHvfnbY
Y0ZrQQqLF9JK98x9UiIwWwcCN2Cq1wNqzph3ShG1RK0NeqbxWn6p4XB5zgHvfnbY
这是不同于使用反引号运算符。在这种情况下,兼容两个make,它会每次运行命令。
好消息它是在最新的GNU make中得到的。 – Dereckson