全部博文(584)
分类: LINUX
2010-11-15 22:18:14
在Makefile.am中我们经常会看到如下代码:
if DEBUG
DBG = debug
else
DBG =
endif
noinst_PROGRAMS = $(DBG)
在这里的DEBUG就是continal,那么,如何设置DEBUG是true还是false呢。
通常我们在使用contional之前需要通过AM_CONDITIONAL这个宏在
configure.in进行定义。
如AC_CONDITIONAL(DEBUG,test x$dbg = xtrue),这就是说当dbg这个变量是true时,
DEBUG这个contional就是true,在Makefile.am中DBG就会被设置为debug。我们肯定不想
每次都去手工设置dbg的值来控制DBG的值,有一种方法可以做到,那就是AC_ARG_ENABLE
AC_ARG_ENABLE(debug,
[ --enable-debug Turn on debugging],
[case "${enableval}" in
yes) debug=true ;;
no) debug=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],[debug=false])
AM_CONDITIONAL(DEBUG, test x$debug = xtrue)
在configure.in中加入上面的代码后,你就可以在./configure后面加上--enable-debug
来打开DEBUG这个开关,可以用--disable-debug或--enable-debug=false或不加任何东西
来关闭DEBUG这个开关。
那么Makefile.am中的 if DEBUG和源代码中的#ifdef DEBUG是一样的么,在下一篇我再来看看。