LINUX.ORG.RU

Сборка mysql-плагина для Qt5.12.3

 , ,


0

1

Всем привет.

Не могу разобраться со сборкой сабжа.

Инструкции на сайте Qt предельно понятные:

You need the MySQL / MariaDB header files, as well as the shared library libmysqlclient.so / libmariadb.so. Depending on your Linux distribution, you may need to install a package which is usually called "mysql-devel" or "mariadb-devel".

Tell qmake where to find the MySQL / MariaDB header files and shared libraries (here it is assumed that MySQL / MariaDB is installed in /usr/local) and run make:
cd $QTDIR/qtbase/src/plugins/sqldrivers
qmake -- MYSQL_PREFIX=/usr/local
make sub-mysql

Скачал сорцы mariadb10.3, собрал. Закинул в одну директорию хедеры из libmariadb/include (содержит mysql.h и прочие) и получившиеся файлы библиотек .so и .a. Эту директорию указываю справа от MYSQL_PREFIX=, qmake вызываю от свежеустановленного Qt5.12.3.

Получается следующий вывод:

Running configuration tests...
Done running configuration tests.

Configure summary:

Qt Sql Drivers:
  DB2 (IBM) .............................. no
  InterBase .............................. no
  MySql .................................. no
  OCI (Oracle) ........................... no
  ODBC ................................... no
  PostgreSQL ............................. no
  SQLite2 ................................ no
  SQLite ................................. yes
    Using system provided SQLite ......... no
  TDS (Sybase) ........................... no

Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/home/user/software/qt/Qt5.12.3/5.12.3/gcc_64'.

Prior to reconfiguration, make sure you remove any leftovers from
the previous build.

Далее по мануалу вызываю make sub-mysql, получая вывод make: *** Нет правила для сборки цели «sub-mysql». Останов.

В мануале по сборке полторы строчки и полторы команды, ошибиться по сути невозможно. Почему не работает? Может кто-нибудь знает, как собрать этот несчастный плагин?


Закинул в одну директорию

Скорее всего структуру каталогов нужно правильную делать, как в /usr. Т.е. заголовочные файлы сложить в include, а библиотеки в lib. Заголовочные могут быть ещё и в подкаталоге, например mysql. Я не знаю, что там требуется. А в MYSQL_PREFIX передать путь до каталога, который будет содержать каталоги include и lib

ox55ff ★★★★★
()

И кстати я не использовал переменную MYSQL_PREFIX, а указывал так (но это я собирал для Windows и MSYS2):

qmake -- MYSQL_INCDIR="/c/msys64/mingw64/include/mariadb" MYSQL_LIBDIR="/c/msys64/mingw64/lib" MYSQL_LIBS="-llibmariadb"
rumgot ★★★★★
()

И еще при вызове make я не указывал цель sub-mysql.

rumgot ★★★★★
()
Ответ на: комментарий от ox55ff

Т.е. заголовочные файлы сложить в include, а библиотеки в lib.

Изначально я так и сделал, не сработало. Потом уже решил всё в кучу свалить, поскольку парни из Qt решили не пояснять, что и где конкретно должно лежать.

s3rjke
() автор топика
Ответ на: комментарий от rumgot

Если ты в Ubuntu то можно установить пакет libmariadbd-dev или libmysqlclient-dev.

libmariadb-dev стоит.

И еще при вызове make я не указывал цель sub-mysql. Если не указывать цель, то оно чё-то там билдит, но есть подозрение, что плагин мускуля в это чё-то не входит, раз уж он решил, что mysql..no.

Пока скачал сорцы самого фреймворка, пробую собрать с поддержкой сразу всего, что надо.

s3rjke
() автор топика
Ответ на: комментарий от s3rjke

Нафига тебе весь Qt собирать? Это ж долго. Лучше попробуй выполнить конфигурирование по аналогии с той командой, что я тебе прислал. Я думаю фишка в том, что по умолчанию при конфигурировании идет попытка найти именно библиотеку mysql client. Поэтому в случае, когда ты хочешь вместо нее использовать библиотеку mariadb, то нужно указывать это явно.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 2)
Ответ на: комментарий от rumgot

Не работает оно так. По-прежнему выдаёт MySql..no.

Что характерно, configure-скрипт самого Qt прекрасно сожрал те же самые пути к хедерам и либам.

Оставил сборку на ночь, пришёл сейчас на работу – фреймворк собрался и мускуль в нём работает.

Update: в общем, я прокосячился. Судя по всему на одной из итераций забыл снести файл config.cache.

Сейчас выполнил qmake – MYSQL_PREFIX=/home/user/lib/mariadb" (в MYSQL_PREFIX указана директория, где навалены кучей и хедеры, и либы) и оно вроде сожрало и стало MySql..yes.

Проверил на простой тестовой программе, плагин тоже поставился и заработал.

Эх, вот что значит выспаться.

s3rjke
() автор топика
Последнее исправление: s3rjke (всего исправлений: 2)
Ответ на: комментарий от s3rjke

install a package which is usually called «mysql-devel» or «mariadb-devel».

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.