Подтвердить что ты не робот

Как создать 64-битное приложение MinGW Qt в Windows (с Qt Creator)

Я смотрю (и уверен, что я не единственный) для самого прямого способа создания на основе MinGW 64-разрядных Qt-программ в Windows. Прямой вперед означает минимальные усилия и время (например, для построения и настройки). В настоящее время я запускаю обычную официальную среду разработки сайта qt-project.org для Windows 32-bit с MinGW/OpenGL и QtCreator. Конечно, я прочитал (незавершенную...) 64-битную wiki-страницу qt-project.org, и я также прочитал несколько вопросов о stackoverflow, но все же я в замешательстве. Я знаю, что тема создания 64-битного Qt рассматривается в других сообщениях, но это не мой вопрос, мне нужен обзор и самый выгодный 64-битный порт MinGW.

Одна вещь, которая меня смутила, например, заключалась в том, что DLL файлы в пакете "x64-Qt-5.2.1 + QTCreator-3.0.1- (gcc-4.8.2-seh).7z" из проекта sourceforge от mingwbuilds кажутся 32-битный.

Чтобы уточнить мой вопрос, позвольте мне также задать некоторые связанные вопросы:

  • Нужно ли сначала создавать 64-разрядную среду разработки для создания 64-разрядные исполняемые файлы или я могу сохранить обычную среду по умолчанию и замените инструментальную цепочку MinGW на 64-битную инструментальную цепочку?
  • Где можно Я получаю 64-битные библиотеки Qt для развертывания, или мне нужно построить они все равно? Или где я могу получить 64-битную среду разработки включая 64-битные библиотеки?
  • Если мне нужно построить сам, какой MinGW 64-битный порт является наиболее благоприятным?

Большое спасибо за вашу помощь.

4b9b3361

Ответ 1

Я думаю, что ответ rubenvb теперь лучший ответ на этот вопрос: MSYS2 содержит обновленный Qt, созданный с помощью MinGW-w64, и это то, что вы Мне нужно будет создавать 64-битные приложения Qt. Я рекомендую использовать ссылку Qt wiki в ответ rubenvb для развертывания; это значительно улучшилось.

Qt64-NG

Я рекомендую установить вашу Qt-сборку из проекта Qt64-NG.

Проект предоставляет обновленную сборку x64 Qt с помощью MinGW-w64. Компилятор GCC проекта MinGW-w64 также включен в версии установщика (но не в 7z). Вам понадобится такая же версия GCC в MinGW-w64, которая использовалась для создания Qt для создания ваших собственных приложений, поэтому я бы рекомендовал выбрать установщик.

Вам нужно будет выбрать сборку с помощью метода разметки стека исключений, который вы хотите. Вопрос В чем разница между sjlj vs dwarf vs seh? описывает различия между типами обработчиков исключений, которые присутствуют в разных строках Qt. SJLJ был единственным выбором, прежде чем GCC 4.8 был выпущен, но позже версии GCC поддерживают SEH. Любой выбор будет работать, хотя SEH более эффективен.

После установки

После установки Qt вы можете добавить каталоги Qt/qt-ver/qt-ver/bin и Qt/qt-ver/mingw64/bin в свою переменную User или System Path в переменных среды, что позволит вам использовать MinGW-w64 GCC для создания из вашего предпочтительного процесса сборки. Qt Creator автоматически определит MinGW-w64 в качестве установленного компилятора после этого.

Если вы предпочитаете не добавлять к своему пути, вы можете указать компилятор для версии, которую вы только что настроили с помощью Qt Creator, вручную. Вероятно, вам нужно добавить версию Qt, выбрав qmake.exe в разделе "Параметры" > "Сборка и запуск". Вы также захотите выбрать gdb.exe в качестве отладчика на вкладке "Сборка и запуск" > "Отладчики". Он будет расположен в Qt/qt-ver/qt-ver/mingw64/bin.

Вы можете обменять инструментальную цепочку MinGW-w64 на другие инструментальные цепочки. Для этого в Qt Creator вы можете создавать и менять между наборами.

Развертывание

Вы можете использовать сборку Qt64-NG для разработки и развертывания. Чтобы развернуть, вы захотите упаковать файлы, которые потребуются вашему приложению, с вашим приложением, поэтому конечным пользователям не придется выполнять какие-либо дополнительные шаги установки.

Сначала создайте папку развертывания (вероятно, с вашим именем приложения) и скопируйте на нее файл exe приложения. Если вы используете Qt Creator, вы можете найти путь к вашему приложению exe либо на вкладке "Проекты" на боковой панели, либо в файле .pro. Приложения, если он указан там.

Существует два способа копирования зависимостей dll, необходимых для запуска приложения. Вы можете либо скопировать нужные файлы вручную, либо воспользоваться программой windeployqt, программой с установленной Qt-установкой, которая автоматически скопирует (большинство) необходимые зависимости для развертывания в папку развертывания приложения, которую вы только что создали.

Скопировать файлы вручную

Скопируйте следующие файлы DLL из ваших папок Qt/qt-ver/qt-ver/bin и Qt/qt-ver/mingw64/bin в папку развертывания вашего приложения. Некоторые файлы DLL будут расположены в обеих папках, и любое место допустимо для использования:

icudt54.dll
icuin54.dll
icuuc54.dll
libgcc_s_sjlj.dll or libgcc_s_seh.dll (corresponds with chosen stack unwinding method)
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

Вам также нужно будет указать любые файлы Qt5 *.dll, соответствующие модулю Qt, который вы используете в своем проекте.

Затем вам нужно будет скопировать любые DLL файлы плагина, которые требуется Qt. Qt будет искать плагины по умолчанию в папке/плагинах развертывания приложения. Вы можете найти папки плагинов, которые вы хотите скопировать в Qt/qt-ver/qt-ver/plugins. Исключением из этого является папка платформ, в которой она попытается найти в вашем приложении развертывание каталога/платформ. Следующая структура каталогов указывает, где скопировать файлы для минимального проекта. Скопируйте любые другие необходимые плагины, включая содержащую папку, в папку развертывания/плагинов.

/развернуть

/platforms
/plugins
icudt54.dll
icuin54.dll
icuuc54.dll
app.exe
libgcc_s_seh-1.dll
libssp-0.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

/развернуть/платформы

qwindows.dll

/развернуть/плагинов/imageformats

qjpeg.dll

Windeployqt

Вы можете найти файл windeployqt.exe в папке Qt/qt-ver/qt-ver/bin. Windeployqt требует, чтобы ваша папка Qt/qt-ver/qt-ver/bin и mingw64/bin находилась в переменной User или System Path для правильной работы.

Чтобы использовать windeployqt, откройте окно команд и перейдите в каталог развертывания приложения. Синтаксис его запуска можно найти в Qt Deployment. Вероятно, вы захотите запустить его следующим образом:

windeployqt.exe app.exe

Windeployqt (Qt 5.4.1) скопирует ваши плагины изображений и значков на плагины вашего приложения, а не внутри папки плагинов. Это правильное местоположение, так как оно изменяет, где Qt ищет эти папки.

Устранение неполадок

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

Если вы получаете ошибки, обратитесь к Руководство по развертыванию Tripleboot. Вы также можете попытаться использовать Process Explorer, чтобы узнать, какие зависимости приложение пытается загрузить, когда оно дает ошибку с отсутствием зависимости.

Упаковка

Часто приложения распространяются вместе с архивом и/или установщиком. Qt Installer Framework обеспечивает удобный способ для упаковки вашего приложения Qt для распространения в качестве исполняемого файла установщика.

Ответ 2

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

Установка прост:

  • Загрузите установщик из веб-страницы.
  • Откройте командную строку MSYS2 и установите Qt:

    pacman -Sy mingw-w64- {i686, x86_64} -qt5

  • Qt qmake устанавливается в <msys2>/mingw{64,32}/bin и доступен из соответствующих командной строки.

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

Что касается остальной части развертывания приложения, я отсылаю вас к странице вики проекта Qt при развертывании Windows.