Я следую основным решениям, чтобы решить ее, но у меня уже была проблема.
В моем файле configure.ac
есть проверка на наличие mysql:
AC_CHECK_HEADER([mysql/mysql.h], ,AC_MSG_ERROR([Could not find mysql headers !]))
и, конечно, жалуются, потому что, как объясняют здесь :
Если заголовочные файлы установлены в нестандартном месте, например
/ opt / include, и CPPFLAGS не ссылается на этот каталог для
Например, как макрос -I / opt / include-AC_CHECK_HEADER завершится ошибкой, даже
хотя файлы существуют в системе. Тем не менее, это проблема для
системный администратор. Частью удобства autoconf является
что вам, как разработчику, не нужно беспокоиться об этих деталях.
Итак, как разработчик, как правильно решить эту проблему?
Я также указал путь реального местоположения в Makefile с помощью -I/usr/include/mysql
, но он продолжает жаловаться.
РЕДАКТИРОВАТЬ: в соответствии с предложением я публикую configure.ac
(основные части):
useMysql=no
AC_MSG_CHECKING([whether to use mysql])
AC_ARG_ENABLE(mysql,
[ --enable-mysql Enable mysql support],
[MYSQL="$enableval"]
useMysql=yes,
[MYSQL="no"]
)
AC_MSG_RESULT([$MYSQL])
AC_SUBST([MYSQL])
[...]
if test "$MYSQL" = "yes"; then
AC_CHECKING([for MYSQL Library and Header files])
AC_CHECK_HEADER([mysql/mysql.h], ,AC_MSG_ERROR([Could not find mysql headers !]))
AC_CHECK_LIB(mysqlclient, mysql_init, [ MYSQL_LIBS="-lmysqlclient" ], [AC_MSG_ERROR([$PACKAGE_NAME requires but cannot find mysqlclient])])
AC_DEFINE(USE_MYSQL, 1, [Use MYSQL library])
AC_SUBST(MYSQL_LIBS)
fi
тогда я использую MYSQL_LIBS
в Makefile:
AM_CFLAGS = -g -fPIC -rdynamic -I$(top_srcdir)/include -I/usr/include/mysql