运行
echo -e "all:\n\techo '\$(value MAKEFILE_LIST)'" > /tmp/foo\$bar.mk
make -f /tmp/foo\$bar.mk
将打印
echo ' /tmp/fooar.mk'
/tmp/fooar.mk
由此我们可以看到MAKEFILE_LIST
包含扩展的文件名。
如何获取Makefile的正确名称(包括美元符号)?
我的版本:GNU Make 4.2.1。
我的动机:实际上美元符号是我的Makefile的路径的一部分。我无法重命名该路径,因为它来自Samba共享,将运行make的人必须使用。
以http://savannah.gnu.org/bugs/?50823的形式提交到上游。
答案 0 :(得分:2)
这是一个黑客,但无论如何:你可以定义 make 变量b=$$b
:
$ cat '/tmp/foo$bar.mk'
all:
echo '$(value MAKEFILE_LIST)'
$ gmake -f /tmp/foo\$bar.mk b='$$b'
echo ' /tmp/foo$bar.mk'
/tmp/foo$bar.mk
这不会阻止扩展,但会使扩展成为无操作。