Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1695707
  • 博文数量: 584
  • 博客积分: 13857
  • 博客等级: 上将
  • 技术积分: 11883
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 09:34

分类: 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是一样的么,在下一篇我再来看看。
阅读(1643) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~