Makefile 中的 gmake shell 和 PATH

Makefile 中的 gmake shell 和 PATH

谁能解释一下为什么如下:

export PATH:=$(PATH):~/bin2
B:=$(shell PATH=$(PATH) testXq.sh)
$(warning $(B))

工作正常,显示 ~/bin2/testXq.sh 的运行结果,同时执行以下操作:

export PATH:=$(PATH):~/bin2
B:=$(shell testXq.sh)
$(warning $(B))

返回错误:

make: testXq.sh: Command not found

我使用的是 gmake v4.0

答案1

答案2

扩展波浪号字符的可能性极小gmake,因此波浪号保留在 PATH 中。

然而,当 PATH 字符串再次传递到 shell 时,shell 随后会扩展波形符。

除了gmake不扩展波浪号字符之外,还有另一个问题:

  • gmakeexport似乎仅针对从规则运行的“正常”shell 命令(TAB 插入文本后的 shell 命令)实现该关键字。

这并不是第一次因gmake非正交实现而导致问题。 Gmake 例如声称可以在 OpenVMS 上运行,但该$(shell cmd)方法在 OpenVMS 上不起作用。

相关内容