m4 预处理器“错误:字符串中的文件结尾”

m4 预处理器“错误:字符串中的文件结尾”

我收到此错误信息:

m4:myPerlScript.pl:77: ERROR: end of file in string

当尝试使用 m4 替换某些 perl 脚本中的字符串时。我在 makefile 中进行调用。

$(OUTDIR)/%:    %.pl
        m4 blah/thing.m4 $< > $@
        chmod +x $@

我确保thing.m4存在并且位于正确的位置。

答案1

对于其他到达这里的人来说,OP 的错误也可能是由于缺少右方括号(可能是任何不成对的括号字符)而出现的。

答案2

事实证明,m4 出错是因为它对引号敏感。我将其添加changequote()到替换的 .m4 文件中。

还需要使用 -P 开关来避免匹配 m4 关键字,并将 m4_dnl 添加到每一行。

相关内容