Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как сделать exe файл в qt creator


C++ - Как сделать .exe файл в Qt Creator

Я работал над компилятором Qt Creator, чтобы сделать простой текстовый редактор. Я сделал это, но теперь хочу сделать .exe файл этого проекта, но я не знаю, как сделать .exe файл в компиляторе Qt Creator. Кто-нибудь может помочь?

2

Решение

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

Projects (CTRL+5) -> Build settings -> General -> Build directory

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

4

Другие решения

От:
Как создать исполняемый файл для приложения Qt?
По сути, вы должны искать подпапку MinGW глубоко в дереве Qt, где находятся утилиты Qt, и копировать необходимые библиотеки DLL.

Это шаги, которые я следую, основанные на Qt 4.7.4, для упаковки приложения с правильными общими библиотеками.

Допустим, вы установили Qt в c: \ qtsdk.
Откройте ваш проект и скомпилируйте его в режиме релиза.
Перейдите в этот каталог: C: \ QtSDK \ Desktop \ Qt \ 4.7.4 \ mingw \ bin — он содержит все общие библиотеки. Библиотеки отладки заканчиваются на «d» — frex, QtCore.dll — версия выпуска, в то время как QtCoreD.dll — версия отладки.
Скопируйте хотя бы эти файлы в каталог выпуска (где лежит ваш .exe):

  • MINGWM10.DLL
  • libgcc_s_dw2-1.dll
  • QtCore4.dll
  • qtgui4.dll

Я просто создал, протестировал и развернул фиктивный проект таким образом.

2

Существует инструмент, который автоматически добавляет DLL-файлы в Windows.

В командной строке перейдите в каталог qt bin. Это должно выглядеть примерно так: … \ Qt \ 5.9.1 \ msvc2017_64 \ bin \ (я использую visual studio).

Запустите windeployqt.exe в командной строке, указав в качестве аргумента местоположение своего проекта:

windeployqt.exe C:\project_folder\my_project.exe

Сейчас my_project.exe будет иметь .dll в том же каталоге и будет выполняться.

2

Запуск Qt приложений .exe вне Qt Creator

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

Для версии Qt под компилятор Visual Studio статья другая.

Содержание

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

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

Скачать текущую версию Qt можно тут: http://www.qt.io/download-open-source/.

Допустим, мы создали базовое приложение Qt Widgets (Базовое приложение в Qt Widgets (Qt GuiApplication)).

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

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

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

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

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

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

Как быть?

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

  1. Внизу, над зеленым треугольником выбираем режим Release:
  2. Запускаем приложение, нажатием на зеленый треугольник:
  3. Как видим, через некоторое время запустилось привычное нам приложение. Но теперь *.exe файл появился в папке, которое мы указывали для Release:
  4. Заходим в эту папку (у меня это C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Release):
  5. Если в прошлый раз мы заходили в папку debug, то сейчас заходим в папку release, и запускаем приложение.
  6. Кстати, для последующего распространения программы нам из папки нужен (из текущих файлов) только *.exe файл, поэтому файлы main.o, mainwindow.o, moc_mainwindow.cpp, moc_mainwindow.o можно удалить без ущерба (это служебные файлы, которые при каждой компиляции будут появляться).

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

  1. Найдите папку, в которую устанавливался Qt. У меня это папка C:\QtQt5.2.0
  2. В ней найдите папку с номером версии вашего Qt. У меня это первая папка с названием 5.2.0-rc1. У вас скорее всего будет немного по другому называться (у меня сейчас beta версия стоит).
  3. В ней будет папка компилятора MinGW:
  4. Переходим в неё:
  5. В ней находим главную папку bin:
  6. И в этой папке находим нужные нам dll. Находим тут Qt5Core.dll (не Qt5Cored.dll!!!) и копируем в папку C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Release\release (где наш *.exe файл находится). И запустим приложение:
  7. И вот так копируем все нужные 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. И вот приложение запустилось:
  8. Ура! Но рано радоваться. Если мы запустим на компе, где нет Qt, то приложение выдаст ошибку, так как не может найти библиотеки. Надо скопировать еще несколько файлов. Помните основную папку Qt?
  9. Там есть папка Tools:
  10. В ней есть папка QtCreator:
  11. В ней папка bin:
  12. Скопируйте файл qt.conf в папку с *.exe файлом.
  13. Теперь перейдите в папку с компилятором:
  14. А там перейдем в папку plugins, а оттуда в platforms:
  15. Скопируйте файлы 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.
  16. Вот теперь приложение запустится везде! То есть вы должны вместе с exe файлом копировать все эти dll и qt.conf. На скриншоте временные файлы я не удалил.

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

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

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

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

Готовим приложение на 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 и, как следствие, может в итоге оказаться неработоспособной.

Как создать исполняемый файл для Qt приложения?

Я искал в интернете какую-то полезную и четкую информацию об этом, это раздражает, что такая тривиальная вещь так трудно сделать.

Мне нужно создать исполняемый файл для моего проекта Qt, чтобы запустить его на других компьютерах. Мой проект хорошо работает в Qt Creator, но когда я пытаюсь запустить исполняемый файл, созданный в папке release, я получаю ошибки о некоторых dll, отсутствующих, и хотя я поместил их все в тот же каталог моего .exe я теперь получил некоторые ошибки о entrypoints в процедурах внутри dll (QtCore4.файл DLL.)

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

  • используя исполняемый файл, созданный в папке release, как я сказал выше.
  • статическая связь, следуя этому руководству (и многим другим, все почти то же самое): http://doc.qt.io/qt-4.8/deployment-windows.html но я получаю следующую ошибку во время "configure-static": NMAKE: фатальная ошибка U1077: '"c:\Arquivos de programas\Microsoft Visual Studio 9. 0\VC\BIN\cl.EXE"': код возврата '0x2' Остановка. Не удалось построить qmake, код возврата 2

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

14