Заголовок Mysql не найден, даже если он находится в нестандартном месте - PullRequest
0 голосов
/ 24 января 2019

Я следую основным решениям, чтобы решить ее, но у меня уже была проблема.

В моем файле 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...