我的硬盘上有一个文件夹,名字里有括号。比如:C:/stuff (really cool)/。make$(wildcard ..)函数无法在此目录下正常工作。

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

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

又一次,完全没有结果。
我应该如何正确地摆脱括号?

最佳答案

以下情况不起作用,请随时提醒其他人:
特殊字符通常是“受保护的”,或转义的,并用引号括起来。要创建带圆括号的变量,请使用双引号。

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

在您的情况下,最大的问题是空间,这将导致您的路径被分解成几个部分,而不是一个。
这工作:
gnu make允许您使用\\来逃离空间,因此对$wildcard的调用将变成
$(wildcard C:/stuff\\ (really\\ cool)/*.jpg)

08-25 14:48