我希望能够将参数传递给./configure
脚本,因此它会将使用的NDEBUG添加到我生成的头文件中。我怎样才能做到这一点?我的configure
脚本是从configure.ac
生成的。
我已经有了一个很好的答案,但似乎我的问题是错的。该选项必须删除此NDEBUG
,因为默认情况下我想关闭断言。没有AC_UNDEFINE,所以我需要使用一些技巧:定义ASSERT_ON
,这将关闭NDEBUG
。有没有更简单,更好的方法?
答案 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_VERBATIM
向config.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])