我正在为我的项目使用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的;
答案 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
代替它,它将运行你需要的东西。