2010-09-26 110 views
0

我正在为我的项目使用GNU autotools。 configure.ac脚本具有以下片段。Autoconf没有正确定义变量

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”,但HAVE_CHECKED在C++代码中显示为undefined。

请提出我要出错的地方,或者如果我可以测试它不同?谢谢。

P.S .:我按照这个命令序列:automake; libtoolize; aclocal -I m4; autoconf的;

+2

P.S.到你的P.S.你可以使用'autoreconf'而不是那个命令序列。 – ptomato 2010-09-26 14:01:13

回答

1

如果您没有拨打autoheader,则config.h.in可能已过时,可能不会提及HAVE_CHECKED。我建议你只是抛弃你的命令序列,而使用autoreconf,它会运行你所需要的。

1

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

编辑

我和autoheader版本抱怨,当你不使用的AC_DEFINE完整形式失败:

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

所以你config.h.in将不会得到即使你没有更新调用autoheader。

+0

是的,我有。我证实它并没有在config.h中定义。 – SkypeMeSM 2010-09-26 14:39:13