Estoy teniendo un poco de tiempo obteniendo autoconf para verificar la presencia de un archivo de encabezado particular.¿Por qué Autoconf no pasa la prueba AC_CHECK_HEADER cuando el archivo .h está claramente disponible?
Llamemos a la dependencia del encabezado "inky.h", y digamos que inky es una biblioteca que se instaló (por separado) con el prefijo establecido en "/ usr/local". Esto pone "inky.h" en /usr/local/inky/inky.hy libinky.so en/usr/local/lib.
ahora, estoy tratando de verificar la presencia de inky.h en mi configure.ac aplicaciones de la siguiente manera:
dnl # Setup temp LDFLAGS and look for inky library/header
LDFLAGS_SAVE=${LDFLAGS};
CPPFLAGS_SAVE=${CPPFLAGS};
dnl # Look for inky on the user specified inky install path
LDFLAGS ="-L${inky_library_path}";
CPPFLAGS="-I${inky_include_path}/inky";
AC_MSG_NOTICE([Looking for inky.h using: ${CPPFLAGS}]);
dnl # This check finds inky.h just fine. This check was only used for debugging
AC_CHECK_FILE(
[${inky_include_path}/inky/inky.h],
[AC_MSG_NOTICE([Found inky.h])],
[AC_MSG_NOTICE([Didn't find inky.h])]
)
dnl # Look for the inky header file. If it isn't found, terminate.
AC_CHECK_HEADER(inky.h,
[],
[AC_MSG_ERROR([Couldn't find or include inky.h])]
)
Esto produce la siguiente salida de ./configure (después de una -vfi autoreconf) :
configure: Looking for inky.y in fetk include path: -I/usr/local/include/inky.y
checking for /usr/local/include/inky/inky.h... yes
configure: Found inky.h
checking inky.h usability... no
checking inky.h presence... yes
configure: WARNING: inky.h: present but cannot be compiled
configure: WARNING: inky.h: check for missing prerequisite headers?
configure: WARNING: inky.h: see the Autoconf documentation
configure: WARNING: inky.h: section "Present But Cannot Be Compiled"
configure: WARNING: inky.h: proceeding with the compiler's result
checking for inky.h... no
configure: error: Couldn't find or include inky.h
Ahora bien, esto parece ser el caso, porque inky.h incluye otros 2 cabeceras, por lo que ellos añaden en el cuarto parámetro de AC_CHECK_HEADER así:
dnl # Look for the inky header file. If it isn't found, terminate.
AC_CHECK_HEADER(inky.h,
[],
[AC_MSG_ERROR([Couldn't find or include inky.h])],
[dinky.h plinky.h]
)
que hace que esta salida de ./configure:
configure: Looking for inky in fetk include path: -I/usr/local/include/inky
checking for /usr/local/include/inky/inky.h... yes
configure: Found inky.h
checking for inky.h... no
configure: error: Couldn't find or include inky.h
Estoy en mis ingenios terminan con autoconf. ¿Alguien tiene alguna idea de dónde me estoy equivocando aquí? ¿Es posible obtener la configuración para proporcionar más detalles sobre lo que está fallando? ¿Por qué puedo encontrar el archivo en sí, pero la macro AC_CHECK_HEADER falla?
Además, no me digan que use un paquete de distribución de paquetes diferente. Nunca hubiera elegido Autoconf, pero tengo que agregar algunas dependencias a un proyecto preexistente.
También tenga en cuenta que la biblioteca real no se llama "tinta". Sin embargo, hay un problema de "uso oficial solamente" para este proyecto, así que he cambiado los nombres para proteger el ... bueno, ¡para protegerme!
[Editar - Cerrar] Resolvió el problema. Ver mi respuesta
Esto es probablemente solo un error tipográfico, pero no puede poner un espacio entre 'LDFLAGS' y' = "..." '(a menos que desee ejecutar el programa' LDFALGS' con '=" ... "' como primer argumento. – adl
Gracias. Realmente capté ese error hace unos minutos, pero ciertamente tienes razón. Una de las cosas que odio de Autoconf es la rigidez de las reglas de espaciado. – dusktreader