我的HD上有一个包含括号的文件夹。 喜欢: C:/stuff (really cool)/
。 make $(wildcard ..)
函数在这个目录下无法正常工作。
$(wildcard C:/stuff (really cool)/*.jpg)`
根本没有结果。 我猜这是由于目录名称中的右括号被视为$(wildcard ..)
函数的右括号。 (
和)
用反斜杠转义不起作用。 什么也行不通,将目录名称放入一个variables,然后使用通配符function。
DIR = C:/stuff (really cool) all: @echo "$(wildcard $(DIR)/*.jpg)"
没有结果,再次。
我应该如何正确地摆脱括号?
以下行不通,不断警告别人:
特殊字符通常被“保护”,或者被转义,并附有引号。 要用圆括号创建变量,请使用双引号。
DIR = "C:/stuff (really cool)"
在你的情况下,最大的问题是空间将导致你的路径被分解成几个部分,而不是一个。
这工作:
GNU Make可以让你用\\
转义空格,所以你对$wildcard
的调用会变成
$(wildcard C:/stuff\\ (really\\ cool)/*.jpg)
你没有提到你正在运行的是什么样的环境,但是下面的打印机制在常规的DOS提示符下以及从msys / mingw中为我工作:
DIR = C:/stuff\ (really\ cool) $(info Files in subdir are: $(wildcard $(DIR)/*.jpg)) all: @echo "Files in subdir are: $(wildcard $(DIR)/*.jpg)"
echo
-ed表达式的双引号只对msys / mingw有用。