Makefile 自动变量不转义文件名中的字符

Makefile automatic variables not escaping characters in filenames

我在 Makefile 中使用具有静态模式规则的自动变量,但我对带括号的文件名有疑问。 shell 的括号未正确转义,我从 shell:

得到语法错误
/bin/sh: -c: line 0: syntax error near unexpected token `('

有没有办法让 make 自动转义文件名中的 "bad" 个字符?我试过使用括号,例如 $(<)$(@),但似乎没有什么区别。

当您将自动变量传递给 shell 时,您能否在自动变量周围加上一些单引号?因此,请尝试使用 '$<',而不是 $<。如果您必须使用等同于多个文件名的内容来执行此操作,例如$+ 那么你可以使用 $(patsubst %,'%',$+)