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中的路径分隔符为反斜杠。避免假设正斜杠在像这样的古老工具中起作用。你能用一个符号链接来切断这个结吗?