我在Makefile
中有一个变量:
JAVABIN = $(shell dirname $(which java))
当我回复JAVA_HOME
中的Makefile
变量时,变量定义会抱怨:
dirname: missing operand
Try 'dirname --help' for more information.
当我引用$(which java)
时,JAVABIN
为.
,结果是错误的。我不明白 make 如何读取Makefile,也许是原因。非常感谢你。
答案 0 :(得分:8)
你需要逃避美元:
JAVABIN = $(shell dirname $$(which java))
请参阅6.1 Basics of Variable References。
您收到的具体错误消息是由于$(which java)
部分扩展为空字符串,因为它是一个未定义的变量。因此,dirname
系统命令最终看不到任何参数,在这种情况下,它会抱怨"缺少操作数"。