Готовим приложение на Qt к работе на другом компьютере

Как правило программы пишутся для того чтобы их впоследствии распространять. Либо в открытом доступе, либо локально (например, внутри компании).

Как сделать, чтобы пользователь мог работать с программой, написанной на Qt, на своём компьютере?

Подготовку программы на Qt к распространению можно условно разделить на два этапа:

  1. Компиляция программы в «релиз»;

  2. Комплектация программы необходимыми библиотеками.

Рассмотрим оба этапа применительно к Qt 5.7 с компилятором MinGW для операционной системы Windows.

Компиляция программы в «релиз»

Существуют два основных варианта компиляции приложения:

  • Отладка;

  • Выпуск («релиз»).

Отладочный вариант используется только на этапе разработки и не предназначен для распространения. Кроме того, при комплектации библиотеками для отладочного варианта последние должны иметь суффикс «d» в названии.

Поэтому программу перед распространением необходимо скомпилировать в варианте «Выпуск» («релиз»).

Выбрать нужный вариант компиляции можно непосредственно в рабочем окне QtCreator как показано на скриншоте.

После выбора варианта компиляции и её последующего запуска, программа будет скомпилирована соответствующим образом.

Комплектация библиотеками

После компиляции программы её следует обязательно укомплектовать необходимыми библиотеками.

Дело в том, что в папке со скомпилированной программой находится только исполняемый файл (exe). В таком виде программа будет работоспособна только при запуске из QtCreator, что для обычного пользователя совершенно не приемлемо (да и для самого разработчика не всегда удобно).

Конкретный перечень необходимых библиотек зависит от проекта. Ниже приведён список самых основных из них (которые требуются для запуска любого Qt приложения).

Библиотеки собственно Qt:

  • Qt5Core.dll;

  • Qt5Gui.dll;

  • Qt5Widgets.dll.

Их, а также другие библиотеки Qt можно найти в папке: папка_установки_Qt\Tools\mingw530_32\bin

Служебные библиотеки компилятора:

  • libgcc_s_dw2-1.dll;

  • libstdc++-6.dll;

  • libwinpthread-1.dll.

Их можно найти в папке: папка_установки_Qt\5.7\mingw53_32\bin

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

После этого программа будет готова к распространению и можно приступать к созданию инсталлятора или просто упаковать приложение вместе со всеми библиотеками, например, в zip архив.

Обратите внимание!

Библиотеки для приложения следует копировать именно из папок mingw, а не QtCreator. В последнем случае программа будет укомплектована библиотеками, которые предназначены только для QtCreator и, как следствие, может в итоге оказаться неработоспособной.

6 комментариев

  1. Есть чудесная утилита которая называется windeployqt встроенная в qt, собирает все необходимые файлы для работы приложения автоматически.

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

        1. Если Вы пишите проект с нуля у себя и у Вас полностью правильно выстроены все процессы и вся инфраструктура, то это одно. Когда Вы потом приходите с ним к заказчику или работаете с legacy это уже другое. Там Вас к сожалению никто не будет спрашивать что является моветоном, а что нет. Клиенту нужно чтобы «это» у него работало. А, всё остальное воспринимается, как личные проблемы IT и мало кого интересует. Звучит жёстко, но это жизнь. И чем больше способов заставить Ваш продукт работать у клиента Вы знаете, тем больше у Вас шансов на успех.

  2. Здравствуйте. Подскажите как подготовить проект к выпуску, если используются сторонние библиотеки, например opencv.

    1. Это зависит от того как эти интегрируются с системой и приложением. Если достаточно просто положить dll рядом с exe, то Вам вполне подойдут способы описанные в статье или комментарии Сергея (от 12.02.19). Если для установки библиотек используется инсталлятор, который помещает их в определённые папки и/или прописывает что-то в системе, или сами библиотеки в ней что-то прописывают, то здесь всё гораздо сложнее. Здесь лучше обращаться уже к документации либо в техподдержку или к сообществу разработчиков (для OpenSource). P.S. Пример для технологии opencv привести не могу, т.к. не работал с ней.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *