Windows makefile-转义括号

Windows makefile-转义括号,windows,escaping,makefile,gnu-make,Windows,Escaping,Makefile,Gnu Make,我的硬盘上有一个文件夹,名称中有括号。比如:C:/stuff(非常酷)/。make$(通配符..)函数不能在此目录下正常工作 $(wildcard C:/stuff (really cool)/*.jpg)` 计算结果完全没有结果。我想这是因为目录名中的右括号被视为$(通配符..)函数的右括号。用反斜杠转义(和)无效。同样不起作用的是,将目录名放入变量中,然后使用通配符函数 DIR = C:/stuff (really cool) all: @echo "$(wildcard $(DI

我的硬盘上有一个文件夹,名称中有括号。比如:
C:/stuff(非常酷)/
。make
$(通配符..)
函数不能在此目录下正常工作

$(wildcard C:/stuff (really cool)/*.jpg)`
计算结果完全没有结果。我想这是因为目录名中的右括号被视为
$(通配符..)
函数的右括号。用反斜杠转义
无效。同样不起作用的是,将目录名放入变量中,然后使用通配符函数

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是必需的。

这对我不起作用
dir=“C:/stuff(真的很酷)”;;foo=$(通配符$(dir)/*)
<代码>$(foo)为空。Windows中的路径分隔符为反斜杠。避免假设正斜杠在像这样的古老工具中起作用。你能用一个符号链接来切断这个结吗?