I have implemented a logging library in C (which I've named liblogger), and used Autotools to compile and install it. As far as I can see, the installation is correctly done, since the headers and the library itself (which I currently bundle into a static library) are installed into the appropriate directories (/usr/local/include/liblogger/ for the headers and /usr/local/lib for the .a).
Now I am trying to link another tool with that library (compiled and built also using Autotools). To check for the logging library presence, I have followed what is said here to create the configure.ac file. But the resulting configure script says:
checking /usr/local/include/liblogger/logger.h usability... no
checking /usr/local/include/liblogger/logger.h presence... no
checking for /usr/local/include/liblogger/logger.h... no
checking for log_init in -l/usr/local/lib/liblogger.a... no
even though the named files DO exist.
The part of the configure.ac file where I check for the header and the library is as follows:
LIBLOGGER=/usr/local/lib
HEADERLOGGER=/usr/local/include/liblogger
AC_CHECK_HEADER([${HEADERLOGGER}/logger.h],
[AC_DEFINE([HAVE_LOGGER_H], [1], [found logger.h])
CFLAGS="$CFLAGS -I${HEADERLOGGER}"])
AC_CHECK_LIB([${LIBLOGGER}/liblogger.a],
log_init, [found liblogger.a], [], [])
AC_SUBST(LIBLOGGER)
Actually, if I try with:
AC_CHECK_FILE(
[${HEADERLOGGER}/logger.h],
[AC_MSG_NOTICE([Found logger.h])],
[AC_MSG_NOTICE([Didn't find logger.h])]
)
it does find the file.
Thanks.
LIBLOGGER
orHEADERLOGGER
in theconfigure.ac
of the dependent package. Instead, just doAC_CHECK_HEADER([logger.h])
and make sure that-I/usr/local/include
is in CPPFLAGS and-L/usr/local/lib
is in LDFLAGS when you run configure. The trouble with hard coding a path in configure.ac is that it will completely break when someone puts the library somewhere else. – William Pursell/usr/local/include
for the headers... – Ginswich