makefile - 转义括号

时间:2012-11-08 12:06:14

标签: windows escaping makefile gnu-make

我的HD上有一个文件夹,其名称中包含括号。喜欢:C:/stuff (really cool)/。 make $(wildcard ..)函数无法正常使用此目录。

$(wildcard C:/stuff (really cool)/*.jpg)`

根本没有评估结果。我想这是因为目录名中的右括号被视为$(wildcard ..)函数的右括号。使用反斜杠转义()不起作用。什么也行不通,是将目录名放入变量然后使用通配符函数。

DIR = C:/stuff (really cool)
all:
    @echo "$(wildcard $(DIR)/*.jpg)"

再没有结果。

我应该如何正确地逃避括号?

2 个答案:

答案 0 :(得分:0)

以下不起作用,一直警告别人:

特殊字符通常使用附加引号进行“保护”或转义。要使用括号创建变量,请使用双引号。

DIR = "C:/stuff (really cool)"

在您的情况下,最大的问题是会导致您的路径被分解为多个部分而不是一个部分的空间。

这有效:

GNU Make可让您使用\\转义空格,以便您对$wildcard的调用变为

$(wildcard C:/stuff\\ (really\\ cool)/*.jpg)

答案 1 :(得分:0)

您没有提到正在运行的环境,但以下两种打印机制都适用于常规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有用。