makefile – 转义括号

我的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有用。