Как в qt запустить внешний exe файл

Обновлено: 03.07.2024

Здравствуйте. Помогите собрать exe. Статический, не зависящий от Qt и что бы запускалось на разных компьютерах. Либы пробовал пихать вместе с ехе, на том компьютере где есть Qt запустилось, а на том где нету - соответственно нет.

Пытался собрать со статическими. У меня версия Qt 5.1.1, может из за этого и не получилось. Собрал через "релиз". Нашел в папке exe файл. К нему попытался подвязать либы.

[quote author="moomot" date="1397126332"]К нему попытался подвязать либы. [/quote]
А что значит подвязать либы к exe файлу?
Если он уже собран с динамическими либами, то их надо с собой тащить и прописывать в PATH ту директрорию где они будут лежать
Если же exe собран статически то ничего другого ему не нужно

[quote author="moomot" date="1397126332"]Собрал через “релиз”. [/quote]
Это не значит, что exe будет собран статически. Надо смотреть какие опции использованы и какие библиотеки использовались.

А как мне собрать статически?

Если я правильно понял инструкцию то вначале надо пересобрать Qt статически
@
cd C:\path\to\Qt
configure -static <другие опции>
@

после этого пересобрать свой проект предварительно удалив существующий билд
@
nmake clean
qmake -config release
nmake
@

nmake command not found
[quote author="andreyc" date="1397140220"]Если я правильно понял инструкцию то вначале надо пересобрать Qt статически
@
cd C:\path\to\Qt
configure -static <другие опции>
@

после этого пересобрать свой проект предварительно удалив существующий билд
@
nmake clean
qmake -config release
nmake
@

Какая версия Qt у вас? MinGW или VS
Попробуйте make
А Qt вы пересобрали и установили ?

QT 5.1.1
установил еще одну такую именно для статика.
Порядок действий:
@To build static applications, build Qt statically by configuring Qt with -static:
cd C:\path\to\Qt
configure -static <any other options you need>@
для того что бы пользоваться configure я нашел именно ту директорию где лежит configure.exe configure.pro и перешел к ней через cd
Так как если просто перейти в папку Qt, то напишет, что "configure" не является внутренней или внешней командой..
Директория которая у меня: C:/QTSRC/5.1.1/Src/qtbase/
После того как я нашел где лежит configure - перешел туда.
Потом прописал
configure -static, оно спросило какую версию, я выбрал open source, подтвердил, и оно мне выбило типо:
WARNING: The DirectX SDK could not be detected:
There is no Direct X SDK installed or the environment variable "DXSDK_DIR" is not set.
Disabling the ANGLE backend.

Warning: Using OpenGL ES 2.0 withou ANGLE.
Specify -opengl desktop to use Open GL.
The build will most likely fail.
Press eny key to continue.

Я нажал любую клавишу, оно погнало дальше, и написало:
Qt is now configured for building. Just run mingw32-make.

Прописываю дальше nmake clean, пишет не знает что такое nmake. То же и с make.
Пишу qmake clean, пишет что не может найти файл clean.

[quote author="andreyc" date="1397149090"]Какая версия Qt у вас? MinGW или VS
Попробуйте make
А Qt вы пересобрали и установили ?
[/quote]

Qt 5.1.1 для Windows зависит от компилятора который установлен.
Если это Visual Studio то надо ставить Qt (VS), если нету VisualStudio то надо ставить Qt (MinGW) оно идёт со своим компилятором и прочим.

Если установлен Qt (VS) то надо использовать nmake из VisualStudio
для Qt (MinGW) надо использовать make или mingw32-make

использую minigw32-make - покатило, но на одном компьютере уже минут 15 строки бегут. А на втором тупо зациклилось, вход в директорию, выход, вход, выход.

Создалось, в папке release появился exe. Но по прежнему требует библиотеки. Закинул библиотеки снова - не помогает.
[quote author="andreyc" date="1397150235"]Qt 5.1.1 для Windows зависит от компилятора который установлен.
Если это Visual Studio то надо ставить Qt (VS), если нету VisualStudio то надо ставить Qt (MinGW) оно идёт со своим компилятором и прочим.

Если установлен Qt (VS) то надо использовать nmake из VisualStudio
для Qt (MinGW) надо использовать make или mingw32-make
[/quote]

Qt большая библиотека, время сборки зависит от компьютера. у меня qtbase занимает минут 20-25 собрать.

возможно что на втором вы собираете второй раз и make просто перебирает все директории и пытается найти изменёные файлы.

Лучше собираеть на свежих исходниках.

[quote author="moomot" date="1397154107"]Создалось, в папке release появился exe. Но по прежнему требует библиотеки. Закинул библиотеки снова - не помогает.[/quote]

вы собрали и установили Qt ?

вы собрали и установили Qt ?

это на той машине где не работает или на девелоперской?
тут похоже что ругается на какие-то другие библиотеки

а что говорит в консоле когда запускаете на что ругается?

на 2-ух машинах стоит Qt. Если скопировать dll в папку вместе с прогой, то работает, но только на той где это делалось. И + весят больше 40 мб библиотеки.
[quote author="andreyc" date="1397156225"]это на той машине где не работает или на девелоперской?
тут похоже что ругается на какие-то другие библиотеки

а что говорит в консоле когда запускаете на что ругается?[/quote]

если же всё-таки хотите собрать статически то надо взять исходники Qt, я ссылки давал выше, и собрать Qt, потом пересобрать свой проект с этой Qt.
но exe файл будет весить не мало.

если же всё-таки хотите собрать статически то надо взять исходники Qt, я ссылки давал выше, и собрать Qt, потом пересобрать свой проект с этой Qt.
но exe файл будет весить не мало.
[/quote]

"Ничего не понимаю" (с) Падал прошлогодний снег

На скрине показывает что testing.exe зависит от qt5core.dll
qt5core.dll - это динамическая библиотека

то есть вы сделали
@
cd Qt dir
configure -static .
make
install
@

потом собрали свой проект использую эту свежесобраную Qt
и получилось то что получилось

возможно у вас остались старые библиотеки Qt и поэтому они подцепились вместо статических

я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать
make install из исходников опять
и потом полностью перестроить свой проект

а ещё лучше ничего не переименовыать а проинсталировать в другую директорию
@
cd Qt-source
configure -prefix=<какая-нибудь другая директория не под Qt> -static
make
make install
@
и уже использовать эту новую директорию для своего проекта

2 вариант - пишет нет доступа. Пробовал под админом - не покатило.
"я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать
make install из исходников опять" - подробнее можно?)
[quote author="andreyc" date="1397158826"]а ещё лучше ничего не переименовыать а проинсталировать в другую директорию
@
cd Qt-source
configure -prefix=<какая-нибудь другая директория не под Qt> -static
make
make install
@
и уже использовать эту новую директорию для своего проекта[/quote]

[quote author="moomot" date="1397161271"]"я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать make install из исходников опять" - подробнее можно?)[/quote]

Это зависит от того какая у вас инсталяция, если всё в одном Qt и QtCreator то вариант с переименовыванием не очень хороший потому что от этих же библиотек зависит QtCreator и если директорию убрать то QtCreator перестанет работать.

не могли бы вы запостить лог ваших команд когда пересобирали Qt
может быть там какая-нибудь опечатка вкралась

В смысле какая инсталяция? Напишите мне подробно какую нужно использовать)
[quote author="andreyc" date="1397162761"][quote author="moomot" date="1397161271"]"я бы посоветовал переименовать Qt/lib в Qt/lib_original попробовать make install из исходников опять" - подробнее можно?)[/quote]

Это зависит от того какая у вас инсталяция, если всё в одном Qt и QtCreator то вариант с переименовыванием не очень хороший потому что от этих же библиотек зависит QtCreator и если директорию убрать то QtCreator перестанет работать.

не могли бы вы запостить лог ваших команд когда пересобирали Qt
может быть там какая-нибудь опечатка вкралась

Ура. Получилось. Делал по вот этой инструкции.

Открываем папку (по умолчанию) C:/Qt/5.1.1/5.1.1/Src

Ищем файл configure и открываем его любым текстовым редактором
2.1) Ищем строчку: "QT_DEFAULT_BUILD_PARTS="libs tools examples"" и убираем оттуда "examples"
2.2) Ищем строчку "CFG_COMPILE_EXAMPLES=yes" и заменяем "yes" на "no"
2.3) Ищем строчку "QT_INSTALL_EXAMPLES=yes" и заменяем "yes" на "no"
2.4) Сохраняем файл

Открываем папку C:/Qt/5.1.1/5.1.1/Src/mkspecs/win32-g++ (для компилятора mingw)

Открываем файл qmake.conf любым текстовым редактором
4.1) Ищем строчку "QMAKE_LFLAGS=" и заменяем ее на "QMAKE_LFLAGS=-static -static-libgcc" и сохраняем файл

Открываем терминал Qt'a, называется он так: "Qt 5.1.1 for Desktop (MinGW)" (в пуске с Qt'ом найти можно)

Вводим след. команды:
@cd C:/Qt/5.1.1/5.1.1/Src/qtbase
configure.exe -debug-and-release -opensource -c++11 -static -opengl desktop -no-angle -no-vcproj@
Когда спросит про лицензию - принимаем (y)

Вводим след. команду:
@mingw32-make.exe sub-src
@

После завершения закрываем консоль и открываем Qt Creator

Инструменты -> Параметры -> Сборка и запуск -> Профили Qt -> Добавить
11.1) Выбираем qmake.exe, который расположен по след. пути: "C:/Qt/5.1.1/5.1.1/Src/qtbase/bin"

Выбираем Комплекты -> Добавить -> Профиль Qt (тут выбираем наш новый профиль)

Создаем новое приложение, собираем и радуемся exe файлу размером в 13мб, который содержит в себе 1 жалкую кнопочку

Замечательно. Спасибо что опубликовали решение.

Я не думаю что стоит беспокоится по поводу размера, потому что две и более кнопочки не увеличат файл в два и более раз. Скорее всего это будут те же 13 мб.

И Вам большое спасибо за то что направили в правильное русло)
Название изменил!
[quote author="andreyc" date="1397242058"]Замечательно. Спасибо что опубликовали решение.

Я не думаю что стоит беспокоится по поводу размера, потому что две и более кнопочки не увеличат файл в два и более раз. Скорее всего это будут те же 13 мб.


В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.

Тут расскажу о самом механизме нахождения DLL, так как Qt активно развивается и регулярно новые версии выпускает, и под каждую версию писать статью о новом наборе DLL накладно.

В качестве среды для разработки используется Qt 5.2.0 for Windows 32-bit (MinGW 4.8). Для версий не с компилятором MinGW алгоритм решение проблемы может быть иным.

Проблема

При запуске приложения в самом Qt Creator (при нажатии на зеленую стрелку, или же через меню, или же иным способом) мы видим наше приложение:

Запущенное приложение

Когда мы создавали приложение, то мы видели следующее окно:

Выбор компилятора при запуске приложения

Указанные тут папки и есть папки, куда сохраняется наше приложение.

Если мы перейдем в папку C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Debug (у вас папка может по-другому называться), то увидим следующее:

Папка с построенным проектом

Зайдем в папку debug и найдем там наше приложение:

Папка с EXE файлом приложения

Если мы его запустим, то получим ошибку:

Ошибка при запуске приложения

Первый способ — Официальная утилита windeployqt

Update 2018. Сейчас библиотека стала работать гораздо лучше. Поэтому ниже будет более подробная инструкция по использованию windeployqt .

Итак, в командной строке перейдите в папку bin того компилятора, под которым вы компилируете приложение в режиме Release . В этой папке должен быть файл windeployqt.exe . Например, у меня в данный момент для MinGW это папка D:\Qt\5.12.0\mingw73_64\bin , а для Visual Studio D:\Qt\5.12.0\msvc2017_64\bin .

Перейти можно с помощью команды cd :

Командная строка в нужной папке

Скомпилируйте в режиме Release ваше приложение. Для примера я создал простое Qt Widgets Application и скомпилировал под MinGW компилятором:

Компилирование в режиме Release

Найдите папку, в которой находится скомпилированный EXE файл. Например, в моем случае это папка D:\Harrix\Projects\Qt\untitled\_build\release :

Папка с EXE файлом

Теперь можно в командной строке вызвать windeployqt с указанием папки с EXE файлом:

Вызов команды windeployqt

Теперь в папке добавились нужные файлы:

Папка с EXE файлом и DLL

Но если попробовать запустить EXE файл, то вылетит ошибка, так как три DLL не скопировались: libwinpthread-1.dll , libstdc++-6.dll , libgcc_s_seh-1.dll . Их нужно вручную скопировать из той же папки, где находится windeployqt.exe :

Папка с недостающими DLL

После этого приложение должно запуститься. Настоятельно рекомендую проверить работоспособность приложения на чистом компьютере без установленной Qt.

Для компилятора Visual Studio алгоритм тот же, но лучше еще добавить параметр --compiler-runtime , например:

Если у вас приложение с использованием QML, то нужен параметр --qmldir с указанием папки, где хранятся .qml файлы:

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

Второй способ — Ручной

Начало решения проблемы

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

Внизу, над зеленым треугольником выбираем режим Release :

Режим Debug

Переключение в режим Release

Запускаем приложение, нажатием на зеленый треугольник:

Запущенное приложение

Как видим, через некоторое время запустилось привычное нам приложение. Но теперь *.exe файл появился в папке, которое мы указывали для Release :

Выбор компилятора при запуске приложения

Заходим в эту папку (у меня это C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Release ):

Папка release

Если в прошлый раз мы заходили в папку debug , то сейчас заходим в папку release , и запускаем приложение:

Ошибка при запуске приложения

Кстати, для последующего распространения программы нам из папки нужен (из текущих файлов) только *.exe файл, поэтому файлы main.o , mainwindow.o , moc_mainwindow.cpp , moc_mainwindow.o можно удалить без ущерба (это служебные файлы, которые будут появляться при каждой компиляции).

Нахождение DLL и других файлов

Итак, приложение ругается на отсутствие Qt5Core.dll (у вас может быть цифра другая, если в момент чтения статьи вышла иная версия Qt). Где этот файл искать?

Найдите папку, в которую устанавливался Qt. У меня это папка C:\QtQt5.2.0

В ней найдите папку с номером версии вашего Qt. У меня это первая папка с названием 5.2.0-rc1 . У вас скорее всего будет немного по-другому называться (у меня сейчас beta версия стоит):

Папка Qt

В ней будет папка компилятора MinGW:

Папка MinGW

Переходим в неё:

Содержимое папки MinGW

В ней находим главную папку bin :

Папка bin

И в этой папке находим нужные нам dll . Находим тут Qt5Core.dll (не Qt5Cored.dll . ) и копируем в папку C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Release\release (где наш *.exe файл находится). И запустим приложение:

Ошибка при запуске приложения

И вот так копируем все нужные DLL, которые просит приложение. У меня потребовались следующие DLL: icudt51.dll , icuin51.dll , icuuc51.dll , libgcc_s_dw2-1.dll , libstdc++-6.dll , libwinpthread-1.dll , Qt5Core.dll , Qt5Gui.dll , Qt5Widgets.dll . И вот приложение запустилось:

Приложение запустилось

Ура! Но рано радоваться. Если мы запустим на компе, где нет Qt, то приложение выдаст ошибку, так как не может найти библиотеки. Надо скопировать еще несколько файлов. Помните основную папку Qt? Переходим в неё:

Папка Qt

Там есть папка Tools :

Папка Tools

В ней есть папка QtCreator :

Папка QtCreator

В ней папка bin :

Папка bin

Скопируйте файл qt.conf в папку с *.exe файлом:

Папка скомпилированного приложения

Теперь перейдите в папку с компилятором:

Папка MinGW

А там перейдем в папку plugins , а оттуда в platforms :

Папка plugins

Папка platforms

Скопируйте файлы qminimal.dll и qwindows.dll . Но вставим не просто в папку с *.exe файлом, там создадим папку plugins , а там папку platforms , и уже в нее вставим файлы. То есть для всех DLL, которые нам могут пригодиться, некоторые находятся не прямо в папке bin , то для этих DLL в папке с EXE файлом мы должны создать такие же папки, в которых они находились, относительно папки компилятора. В нашем случае в папке с компилятором файлы находись под именами: [путь к папке с компилятором] \plugins \platforms \qminimal.dll , [путь к папке с компилятором] \plugins \platforms \qwindows.dll . Поэтому копируйте так: [путь к папке с *.exe файлом] \plugins \platforms \qminimal.dll , [путь к папке с *.exe файлом] \plugins \platforms \qwindows.dll .

Вот теперь приложение запустится везде! То есть вы должны вместе с EXE файлом копировать все эти DLL и qt.conf . На скриншоте временные файлы я не удалил:

Итоговая папка со всеми дополнительными файлами

Здесь показан принцип, как находить нужные DLL. Если вы используете какие то другие компоненты, например, QWebVie w, то вам будут нужны еще другие DLL, которые вы находите аналогичным способом.

Помните, что если вы используется QtQuick то вам еще потребуется папка qml .

Внимание! Иногда описанный выше способ не помогает. Вроде скопировали все DLL, что вам могли пригодиться, приложение даже запускается, но вы видите лишь белый экран, например, или приложение вообще не появляется, но в диспетчере задач появляется.

В таком случае копируйте все DLL из папки bin (а из остальных мест в виде папок, где они хранятся) и начинайте скрупулезно удалять поштучно DLL до тех пор, пока не сузите число файлов до минимально работающего числа. Помните, что все DLL есть в двух вариантах: для release и ли debug режима. Для debug режима в имени DLL появляется буква d . Эти файлы вам не нужны!

Статья обновлена 2018

В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.

В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.

Qt использовать, Qprocess запустить внешнюю программу

В этой статье я в основном говорю о мерах предосторожности при использовании Qtcess Qprocess для вызова внешних программ, и я не буду здесь говорить о методе настройки Qt. В то же время, поскольку в Интернете уже много справочных материалов, я в основном подчеркиваю некоторые детали, которые требуют внимания.

Терминологическая конвенция:

  1. Основная программа: программа, которая будет вызывать стороннюю программу, код вызова находится в программе;
  2. Внешняя программа: программа, запускаемая основной программой, в формате .exe,

(1) Запустите внешнюю программу

Класс Qprocess предоставляет три интерфейсные функции для запуска внешних программ, а именно:

При использовании Process :: Start () для вызова внешней программы, если вы используете bool waitForFinished (int msecs = 30000) для ожидания завершения процесса, Необходимо обратить внимание на настройку параметра времени.Если время выполнения программы велико, его необходимо установить равным -1, иначе программа не запустится.

Сравнение различных интерфейсов запуска:

  • Функция start () удобна для распараллеливания нескольких программ, но вывод внешних программ требует, чтобы главное окно самостоятельно читало, записывало и выводило. Метод вывода показан ниже.
  • Функция execute () интеллектуально запускает внешние программы последовательно. Преимущество заключается в том, что внешняя программная консоль автоматически распечатывается и выводится в главное окно программы. Давайте посмотрим на исходный код Qt, чтобы узнать, что сделала exectue ():
    int QProcess::execute(const QString &program, const QStringList &arguments)
    QProcess process;
    process.setReadChannelMode(ForwardedChannels);
    process.start(program, arguments);
    if (!process.waitForFinished(-1) || process.error() == FailedToStart)
    return -2;
    return process.exitStatus() == QProcess::NormalExit ? process.exitCode() : -1;
    >

(2) Запускать несколько внешних программ параллельно

Или для запуска одной и той же программы несколько раз, вы можете использовать функцию start () или startDetaached () для запуска. Вы не можете использовать execute () для одновременного запуска нескольких программ. Execute () выполняется последовательно. Только после выполнения исполняемой программы будет выполняться следующий код.

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

(3) Как получить вывод внешней программы и вывести его в главное окно или записать в журнал?

Если вы используете execute () для запуска внешней программы, она автоматически распечатает информацию в главном окне программной консоли;

Если вы используете start () для запуска внешней программы, вам необходимо вручную прочитать и записать выходные данные внешней программной консоли. Метод вывода см. В:
Например: подпрограмма a, основная программа A
Вы можете использовать сигнальный слот для подключения входа и выхода двух программ. Примечание:

Для ввода и вывода подпрограммы необходимо использовать стандартный ввод и вывод, std :: cout

Необходимо добавить слоты в основную программу, чтобы объявить функцию корреляции сигналов, например:

private slots://add slots

Чтобы решить проблему, заключающуюся в том, что Qt преобразует китайские выходные символы новой строки в недействительные, QString.split (QRegExp ("[\ r \ n]"), QString :: SkipEmptyParts);

(4) Настройка рабочего каталога

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

  • Используйте start, чтобы установить рабочий каталог внешней программы;
  • Использование параметра execute недопустимо, может наследовать только рабочий каталог основной программы , Это вызовет проблему, если внешняя программа использует относительный путь для доступа к нижнему файлу папки, в которой расположена программа, будет Не удалось найти файл!

При использовании слота сигнала для чтения выходных данных внешней программы на китайском языке возникла проблема: после преобразования на китайский разрыв строки в выходных данных внешней программы будет недействительным. Из-за статьи, написанной между Unix, Windows и Mac, разрывы строк не одинаковы, что приводит к различной обработке. Теперь я буду использовать QString для разделения строк (прочитанные текстовые файлы имеют разрывы строк). Итак, возьмите эти три строки



Пишу свою первую программу на Qt, все сложное сделал, застрял на самом якобы легком=)

есть путь к exe файл (программе), есть ключи, надо запустить эту программу с этими ключами.

то программа blablabla.exe запускается без проблем..

пробую сделать это в своей программе:

process.start("c:\\Program Files (x86)\\blablabla\\blablabla.exe",arguments);

если строку process.start(. заменить на process.start("calc"); калькулятор запускается нормально.

выдает: "Process failed to start: No such file or directory"

вот исходный код программы:

process.start("c:\\Program Files (x86)\\blablabla\\blablabla.exe",arguments); Вылетает blablabla.exe? Очень сильно сомневаюсь, что QProcess::start виноват. Попробуй CreateProcess. Исходники blablabla есть?





Наши свою программку и посмотри, какие параметры она принимает при запуске из QProcess::start



попробуй с помощью QProcess::startDetached(), если еще актуально конечно.



попробовал startDetached, тоже самое =(

Если это игра от EA games, то уже вполне возможно, что вылетает оно из-за какой-нибудь cd-защиты, протектора, пакера и тому подобных навесок.



какая разница запускать программу из консоли cmd или сразу из "Выполнить"?

Yama,
нет, это бесплатная онлайн игра

я создал ярлык на рабочем столе, с ярлыка она запускается отлично. (мне просто надо сделать так как в ярлыке, тот же EXE файл, те же ключи)

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

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

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

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

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

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

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

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

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

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

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

Компиляция в релиз

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: