我有一个字符串,我想多次使用它来输出configure --help。所以我试着在configure.ac中做这样的事情
AC_ARG_ENABLE([foobar],
AS_HELP_STRING([--enable-foobar], [$foobar_help_str]))但是没有进行任何扩展或替换,所以输出只是$foobar_help_str。
发布于 2014-12-14 04:00:00
将字符串定义为M4宏:
m4_define([FOOBAR_HELP_STR], [Turn on the foobar features])
AC_ARG_ENABLE([foobar], [AS_HELP_STRING([--enable-foobar], FOOBAR_HELP_STR)])发布于 2016-09-09 07:50:40
FYI,如果您查看生成的configure脚本,您会发现帮助文本都预先格式化为一个引用的“这里文档”(由cat发送到stdout )中的一个文本块,也就是说,在脚本运行时(即您以./configure --help的身份运行它时)没有任何机会发生任何形式的替换。毫无疑问,这是一个bug,但另一方面,由于autoconf为漂亮打印帮助文本所做的处理是在不知道最终脚本将如何执行的情况下完成的,因此不知道可能设置哪些变量以及它们可能承担的值范围,因此autoconf无法知道在其帮助文本格式中为任何变量在运行时可能分配了多少空间。
如果只需要二进制选项(即不使用/不需要[=ARG]特性),则应该可以编写智能包装器宏,该宏将根据默认设置生成适当的帮助文本,如果该默认值本身首先被定义为M4宏,其方式类似于accepted answer中的建议。
https://stackoverflow.com/questions/27218758
复制相似问题