Autoconf没有正确定义变量

时间:2010-09-26 13:52:52

标签: c++ autotools autoconf

我正在为我的项目使用GNU autotools。 configure.ac脚本包含以下代码段。

AC_ARG_WITH(chkhere,
 AC_HELP_STRING([--without-chkhere], [do not compile]),
 [ac_cv_chkhere=$withval], [ac_cv_chkhere=yes])

# Check if chkhere is available
if test "x$ac_cv_chkhere" = "xyes"
then
 AC_DEFINE(HAVE_CHECKED)
 echo "chkhere: enabled"
else
  echo "chkhere: DISABLED"
fi

我正在检查C ++代码中的变量HAVE_CHECKED。这适用于--without-chkhere选项。

当我给./configure --with-chkhere时,它会根据需要显示消息“chkhere:enabled”,但是在C ++代码中HAVE_CHECKED未定义。

请告知我哪里出错了,或者我可以用不同的方式测试一下?感谢。

P.S。:我遵循这一系列命令:automake; libtoolize; aclocal -I m4; autoconf的;

2 个答案:

答案 0 :(得分:1)

您确定#include <config.h>吗?这就是定义HAVE_CHECKED的地方。

修改

当您不使用AC_DEFINE的完整形式时,我的autoheader版本会抱怨并失败:

AC_DEFINE([HAVE_CHECKED], [1], [some description])

因此,即使您调用了自动抬头,您的config.h.in也不会得到更新。

答案 1 :(得分:1)

如果您未致电autoheader,则config.h.in可能已过期,可能未提及HAVE_CHECKED。我建议你放弃你的命令序列并使用autoreconf代替它,它将运行你需要的东西。