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 %,'%',$+)
我在 Makefile 中使用具有静态模式规则的自动变量,但我对带括号的文件名有疑问。 shell 的括号未正确转义,我从 shell:
得到语法错误/bin/sh: -c: line 0: syntax error near unexpected token `('
有没有办法让 make
自动转义文件名中的 "bad" 个字符?我试过使用括号,例如 $(<)
和 $(@)
,但似乎没有什么区别。
当您将自动变量传递给 shell 时,您能否在自动变量周围加上一些单引号?因此,请尝试使用 '$<'
,而不是 $<
。如果您必须使用等同于多个文件名的内容来执行此操作,例如$+
那么你可以使用 $(patsubst %,'%',$+)