2010-09-26 96 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