I would like to be able pass arguments to ./configure script, so开发者_JAVA技巧 it would add NDEBUG used by to my generated header file. How can I do that? My configure script is generated from configure.ac.
I already one great answer, but it seems that I my question is wrong. The option would have to remove this NDEBUG, because by default I would like to have assertions turned off. There is no AC_UNDEFINE, so I need to use some trick: define ASSERT_ON, which would turn off NDEBUG. Is there any easier, better way?
You'll want to use the AC_ARG_ENABLE() macro in your configure.ac file to trigger an action when someone adds --enable-foo to your command line options.
AC_ARG_ENABLE(foo, "used to turn on the NDEBUG flag", [ AC_DEFINE(NDEBUG) ] )
You can use AH_VERBATIM in order to add extra data to your config.h.in (and thus, config.h file).
The thing is, autoconf is going to comment out anything that looks like a #undef statement when producing the config.h file out of the template.
There is a preprocessor trick to avoid that: use #/**/undef/**/. The C preprocessor is going to strip the comments first, but autoconf will not see that as a #undef statement.
To recap, in order to enforce NDEBUG being undefined:
AH_VERBATIM([NDEBUG], [/* Never ever ignore assertions */
#ifdef NDEBUG
#/**/undef/**/ NDEBUG
#endif])
加载中,请稍侯......
精彩评论