这在 OSX 上有效:
RANDOM := $(shell /bin/bash -c "echo $$RANDOM")
test:
echo $(RANDOM)
对于跨平台随机数,我采用了以下方法:
RANDOM := $(shell od -An -N2 -i /dev/random | tr -d ' ')
我怎样才能使第一个例子发挥作用?
答案1
您的第一行在 OSX 上有效而在 Ubuntu 上无效的原因可能是因为 sh 在 OSX 上是 bash。$$RANDOM
由于您使用了引号,因此在 bash -c 开始执行它时已经扩展""
。因此您可能需要这个:
RANDOM := $(shell bash -c 'echo $$RANDOM')
我个人可能会选择 awk。比如
awk 'BEGIN{srand();printf("%d", 65536*rand())}'