Qt static build с путаницей статических плагинов mysql - PullRequest
3 голосов
/ 25 ноября 2011

Я создал приложение Qt, которое использует библиотеку MySQL, но меня смущает документация по static против shared сборок.

Из документации Qtна http://doc.qt.nokia.com/4.7/deployment-windows.html он говорит:

Для развертывания приложений на основе плагинов мы должны использовать подход с общей библиотекой.

И на http://doc.qt.nokia.com/4.7/deployment.html,он говорит:

Статическое связывание приводит к автономному исполняемому файлу.Преимущество в том, что у вас будет только несколько файлов для развертывания.Недостатки в том, что исполняемые файлы большие и не имеют гибкости, и вы не можете развертывать плагины.Для развертывания приложений на основе плагинов вы можете использовать подход с общей библиотекой.

Но на http://doc.qt.nokia.com/latest/plugins-howto.html,, кажется, говорится обратное, давая указания о том, как использовать статические плагины:

Плагины могут быть статически связаны с вашим приложением.Если вы собираете статическую версию Qt, это единственный вариант для включения предопределенных плагинов Qt.Использование статических плагинов делает развертывание менее подверженным ошибкам, но имеет недостаток, заключающийся в том, что никакие функциональные возможности из плагинов не могут быть добавлены без полной перестройки и распространения приложения.... Чтобы статически связать эти плагины, вам нужно использовать макрос Q_IMPORT_PLUGIN () в вашем приложении, и вам нужно добавить необходимые плагины в вашу сборку, используя QTPLUGIN.

Я хочу собратьБиблиотеки Qt статически (для простого развертывания), а затем использовать статический плагин MySQL.Для этого я НЕ использовал бинарное разрушение для Windows.Вместо этого я начал с исходного кода qt-везде-opensource-src-4.7.4 Является ли следующий правильный способ сделать статическую сборку, чтобы я мог использовать статический плагин MySql?

configure -static-debug-and-release -opensource -platform win32-msvc2010 -no-qt3support -no-webkit -no-script -plugin-sql-mysql -IC: \ MySQL \ include -LC: \ MySQL \ lib

  1. Это должно создать библиотеки Qt статически И статический плагин, который будет связан во время выполнения, правильно?Мне НЕ нужно было бы собирать плагин Mysql из исходного кода отдельно, правильно?

  2. Если бы мне пришлось заменить "-qt-sql-mysql" на "-plugin-sql-mysql" ввыше, он включал бы драйвер MySQL непосредственно в статические библиотеки QT, и в этом случае мне не нужно было бы вообще использовать плагин, правильно?

Спасибо за то, что вы меня не перепутали!

1 Ответ

2 голосов
/ 25 ноября 2011

На странице вашей второй цитаты должно быть написано:

Статическое связывание приводит к автономному исполняемому файлу. Преимущество в том, что у вас будет только несколько файлов для развертывания. Недостатки в том, что исполняемые файлы большие и не имеют гибкости, и вы не можете развертывать плагины.
Для развертывания приложений на основе плагинов вы можете использовать подход с общей библиотекой вместо .

Вы правы относительно обоих предположений, которые вы сделали к концу. Например, конфигурация нашей версии qt включает

-plugin-sql-oci -qt-sql-sqlite

и каталог plugins \ sqldrivers показывает только qsqloci (d) .lib, но ничего не связано с sqlite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...