Estoy trabajando en un proyecto de C++ en GNU/Linux y estoy buscando una manera de probar la existencia y la usabilidad de la biblioteca de IBM Informix con las Autotools, es decir, editar un configure.in
. No tengo experiencia con Autotools, así que básicamente estoy recogiendo del proyecto configure.in
y otros. scripts y copia & cambiando donde siento que necesita ser cambiado. IOW, me he estado adaptando del texto existente en configure.in
.¿Cómo probar una usabilidad de la biblioteca C++ en configure.in?
Hasta ahora he estado utilizando con éxito el AC_CHECK_LIB
en configure.in
para comprobar si una determinada biblioteca existe y es utilizable. Pero esto solo parece funcionar con bibliotecas con funciones, no p. clases Es decir, esto no funciona cuando se prueba libifc++.so
la biblioteca de Informix:
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=""
)
También he intentado usar otras combinaciones, como ITString::ITString
, etc.
no he encontrado una función de "puro" en la API de Informix (es decir, , uno que no está contextualizado en una clase de C++). Así que espero que haya una forma de usar AC_CHECK_LIB
en este contexto, o que haya otro autoconf
/configure.in
"comando" para este uso específico.
Gracias de antemano por su comentario.
Obras-para-mí. Pensé en hacer algo como esto, pero parecía un truco. Por ejemplo, no estoy seguro de qué sucede si el código se vuelve a compilar con una versión diferente de la biblioteca Informix (espero que cambie el nombre). Pero bueno, ¡funciona! :-) – jbatista
Esto debería seguir funcionando con una nueva versión de biblioteca (asumiendo que los nombres de clase y método no cambian), pero puede romperse si la versión del compilador cambia, y casi seguramente se romperá si alguien más intenta compilar su código en otro compilador o compilador. –
@Tyler - un punto válido; He resaltado esto en la respuesta. – DaveR