我正在研究GNU/Linux上的C++项目,并且正在寻找一种方法来测试IBM Informix库的存在性和可用性,即使用Autotools - 即编辑configure.in
。我没有Autotools的经验,所以基本上我从项目的configure.in
et al。脚本和复制&改变我觉得需要改变的地方。 IOW,我一直在修改configure.in
中的现有文本。如何在configure.in中测试C++库的可用性?
到目前为止,我一直在使用中的AC_CHECK_LIB
来测试某个库是否存在并且可用。但是这只能用于具有函数而不是例如函数的函数库。类。也就是说,这个失败测试Informix的libifc++.so
库时:
AC_CHECK_LIB(ifc++, ITString,
INFORMIX_LIB="-L$INFORMIX_LIB_LOCATION/c++ -lifc++ -L$INFORMIX_LIB_LOCATION -L$INFORMIX_LIB_LOCATION/dmi -L$INFORMIX_LIB_LOCATION/esql -lifdmi -lifsql -lifasf -lifgen -lifos -lifgls -lifglx $INFORMIX_LIB_LOCATION/esql/checkapi.o -lm -ldl -lcrypt -lnsl",
echo "* WARNING: libifc++.so not found!"
INFORMIX_INC=""
INFORMIX_LIB=""
)
我已经使用其他组合,如ITString::ITString
也试过,等
我还没有发现在Informix的API“纯”功能(即,不在C++类中占有一席之地)。所以我希望在这种情况下有一种方法可以使用AC_CHECK_LIB
,或者对于这种特定用途还有另一种“命令”。
在此先感谢您的意见。
作品-对于-ME。 我曾考虑过这样做,但它看起来像一个黑客。例如,我不确定如果代码使用不同的Informix库版本重新编译会发生什么情况(我期望改变的名称会发生更改)。 但是,嘿,它的作品! :-) – jbatista 2009-06-20 17:23:35
这应该继续使用新的库版本(假设类和方法名称不会更改),但是如果您的编译器版本更改,则可能会中断,并且如果有人试图在另一个版本上编译您的代码,它几乎肯定会中断编译器或编译器版本。 – 2009-06-20 17:29:32