我的configuration.ac文件中的以下代码不起作用(请注意嵌套方括号 [default = no] ):
AC_ARG_ENABLE(debug,
[ --enable-debug build with debugging support [default=no].],
[DEBUG="$enableval"],
[DEBUG="no"]
)
如何逃避这些括号?
答案 0 :(得分:20)
M4参数用[和]引用。没有办法逃避这些,但是,如果你想插入[或s],你有几个选择:
- 使用'Quadrigaph'。 @<:@给你[和@:> @给你]。
- 平衡报价。 M4将[[]]变为[]。小心在宏的参数中使用它。有时候,你也需要加倍引用([[[]]]。
- 使用以下命令更改引用:changequote(<<,>>)将引用更改为<<和>>。 autoconf文档(正确地,在我看来)警告不要(过度)使用它,因为它可能导致意想不到的结果。
- 尽可能避免[和]。这是我个人的选择。
醇>
因此我的新代码是:
AC_ARG_ENABLE(debug,
AS_HELP_STRING(
[--enable-debug],
[build with debugging symbols @<:@default=no@:>@]),
[enable_debug="$enableval"],
[enable_debug="no"]
)
答案 1 :(得分:8)
Brackets
是一种转义字符,因此与'\'
一样,您可以使用括号转义括号[]
,例如:
AC_ARG_ENABLE(调试 [ - enable-debug build with debugging support [ [default = no] ] 。], [DEBUG = “$ enableval”], [DEBUG = “否”] )
注意: [ []默认=否[] ] 可能无法正常工作,因为m4应该从末尾搜索end_bracket。它应该扩展到[ ]default=no[ ]
。
答案 2 :(得分:0)
使用AC_HELP_STRING