如何在./configure中传递和使用参数?

时间:2011-01-31 21:10:24

标签: assert configure

我希望能够将参数传递给./configure脚本,因此它会将使用的NDEBUG添加到我生成的头文件中。我怎样才能做到这一点?我的configure脚本是从configure.ac生成的。

我已经有了一个很好的答案,但似乎我的问题是错的。该选项必须删除此NDEBUG,因为默认情况下我想关闭断言。没有AC_UNDEFINE,所以我需要使用一些技巧:定义ASSERT_ON,这将关闭NDEBUG。有没有更简单,更好的方法?

2 个答案:

答案 0 :(得分:2)

当有人在命令行选项中添加--enable-foo时,您需要在configure.ac文件中使用AC_ARG_ENABLE()宏来触发操作。

AC_ARG_ENABLE(foo, "used to turn on the NDEBUG flag",
  [ AC_DEFINE(NDEBUG) ]
)

答案 1 :(得分:0)

您可以使用AH_VERBATIMconfig.h.in(以及config.h文件)添加额外数据。

问题是,autoconf会在从模板中生成#undef文件时注释掉任何看似config.h语句的内容。

有一个预处理器技巧可以避免这种情况:使用#/**/undef/**/。 C预处理器将首先删除注释,但autoconf不会将其视为#undef语句。

总结一下,为了强制NDEBUG未定义:

AH_VERBATIM([NDEBUG], [/* Never ever ignore assertions */
#ifdef NDEBUG
#/**/undef/**/ NDEBUG
#endif])