Я создал приложение 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
Это должно создать библиотеки Qt статически И статический плагин, который будет связан во время выполнения, правильно?Мне НЕ нужно было бы собирать плагин Mysql из исходного кода отдельно, правильно?
Если бы мне пришлось заменить "-qt-sql-mysql" на "-plugin-sql-mysql" ввыше, он включал бы драйвер MySQL непосредственно в статические библиотеки QT, и в этом случае мне не нужно было бы вообще использовать плагин, правильно?
Спасибо за то, что вы меня не перепутали!