запуск qt приложений exe вне qt creator
Готовим приложение на Qt к работе на другом компьютере
Как правило программы пишутся для того чтобы их впоследствии распространять. Либо в открытом доступе, либо локально (например, внутри компании).
Как сделать, чтобы пользователь мог работать с программой, написанной на 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 и, как следствие, может в итоге оказаться неработоспособной.
Установка Qt под Visual Studio, MinGW и для разработки под Android
Статьи из цикла
Инструкция по установке Qt с компилятором Visual Studio, MinGW и возможностью программировать под Android на примере Windows 10.
Если вы хотите установить Qt просто, чтобы программировать на C++ под Windows с стандартным компилятором, то вам подойдет упрощенная установка, описанная тут: Установка Qt.
Если вы хотите установить Qt под Windows XP, то данная статья вам не подойдет, так что вам сюда: Установка Qt 4.8.4 на Windows XP.
Подготовка для работы с компилятором Visual Studio
Если вы хотите использовать компилятор под Visual Studio, то вам нужно установить Visual Studio. В статье Установка Visual Studio 2017 Community рассказывается как это сделать.
Если вы хотите разрабатывать универсальные UWP приложения, то не забудьте включить режим Режим разработчика в параметрах Windows 10:
Решите до установки Qt, какой язык интерфейса будет у Visual Studio. От этого зависит язык сообщений об ошибках, которые будут приходит при компилировании проектов в Qt.
Можно язык поменять в настройках Visual Studio:
Но сейчас я предпочитаю в установщике Visual Studio Installer удалить русский пакет и установить английский, чтобы русский язык вообще нигде не вылазил:
Подготовка для программирования под Android
Если вы хотите писать приложения под Android, то вам нужно установить JDK. Об этом можно узнать из статьи Установка JDK 8 в Windows. Обратите внимание, что на июль 2019 рекомендую устанавливать по прежнему Java 8, хотя уже вышла Java 12, так как Qt с ними еще не умеет нормально работать. Но может в момент вашего прочтения этой статьи уже всё поменялось:
Также вам будет нужен Android SDK и Android NDK. Можно их скачать отдельно, но рекомендую поставить Android Studio и оттуда управлять SDK и NDK с нормальным механизмом обновления. Статья об установке: Установка Android Studio в Windows. Особое внимание уделите на установку пакетов SDK из статьи.
Только после установки необходимых вам программ можно приступать к установке Qt.
Установка NDK
Как было сказано выше, то для тех, кто хочет программировать на Qt под Android, то вам нужен Android NDK.
Итак, после установки Android Studio открываем её. Либо так:
В разделе SDK Tools отмечаем NDK и устанавливаем его:
Теперь Android Studio можно закрывать.
Скачивание Qt
Практика нескольких лет наблюдений показывает, что Qt регулярно меняет алгоритм нахождения open source версии установщика, так что учтите это.
Там вам нужно спуститься почти в самый низ:
И там находите Go open source :
Если же вам нужен всё-таки offline установщик, то спуститесь в самый низ и увидите ссылку на них:
Установка
Запускаем скаченный файл:
Если у вас есть учетка на сайте Qt, то вводите данные, иначе нажимаете Skip :
В списке компонентов выбираем Qt Creator:
В последней версии Qt выбираем пакеты с нужными компиляторами.
Лично мне у меня 64-битная Windows 10 с Visual Studio 2017 Community, и мне нужно проверять программы как на компиляторе Visual Studio, так и на MinGW. А также нужно программировать под Android. Поэтому я отметил вот эти пакеты:
Sources — исходники Qt можно не выбирать, если они вам не нужны.
Рекомендую также выбрать для установки дополнительные компоненты. Их можно выбирать все:
Если вам интересна программа Qt 3D Studio и Qt Installer Framework, то можете их отметить:
Соглашаемся с условиями:
Настройка
Если Qt Creator запустился с русским интерфейсом, то настоятельно рекомендую поменять его на английский:
Потом перезапустите Qt Creator:
Если вы создадите какой-нибудь проект в Qt и скомпилируете его под разными режимами (Release, Debug), то у вас в папке, где находится папка с проектом появятся еще папки с скомпилированным проектом:
На мой взгляд это крайне неудобно и засоряет папку, где у вас могут находится другие проекты. Лучше было бы, чтобы эти скомпилированные файлы располагались в специальной папке в папке проекта. Поэтому я меняю в настройках путь. Вы можете не менять — это не принципиально.
Первоначальное значение параметра Default build directory :
Новое значение параметра Default build directory :
Update 2019-07-13. Сейчас у меня стоит такое значение:
Настройка для работы с компилятором Visual Studio
Если у вас Visual Studio с русским интерфейсом, то в сообщениях об ошибках при компилировании в Qt вы будете видеть крякозябры. В статье Крякозябры в Qt под Visual Studio рассказывается как от них избавиться.
Можно поменять язык интерфейса Visual Studio на английский, но лучше это сделать до установки Qt, как говорилось выше. Но если вы все-таки это сделали после установки Qt, и новые проекты хорошо компилируются под компилятором Visual Studio, то со старыми проектами могут возникнуть проблемы:
Настройка для программирования под Android
Перейдем в настройки Qt:
В разделе Android SDK Location выбираем папку, где установлено SDK библиотеки:
В разделе Android NDK Location выбираем папку, где установлено NDK библиотеки:
Update 2019-07-13. Практика показывает, что Qt не всегда поспевает за изменениями в Android SDK и NDK. Поэтому иногда требуются шаманства с бубном, чтобы всё заработало. Причем каждый раз будут свои проблемы. Что делать? Гуглите те сообщения об ошибках, которые у вас будут возникать и ищите ответ на https://forum.qt.io/. Например, на данный момент Qt не собирает приложения с Android SDK Build-Tools 29 и ему нужна версия 28.
Вначале удаляем 29 версию:
Потом устанавливаем 28 версию и те пакеты, которые удалились вместе с 29 версией:
Update 2019-07-13. С NDK также могут быть проблемы, так что велика вероятность, что последняя версия NDK у вас не заработает. Тут рекомендую скачать старую версию NDK на официальном сайте https://developer.android.com/ndk/downloads/older_releases. На момент обновления статьи работала NDK версии 19:
Распакуйте отдельно данный архив и укажите в Qt, когда до этого дойдет дело (об этом читайте ниже в статье):
Если у вас проблемы с эмулятором, то помните, что в конце статьи Установка Android Studio в Windows есть описание того, как создать виртуальные устройства в стандартном эмуляторе, а также рассмотрены несколько других сторонних эмуляторов.
Пример программы
В статье Базовое приложение в Qt Widgets рассказано как создать стандартное Windows приложение со стандартными контролами. Теперь же попробуем создать шаблонное приложение на основе Qt Quick, где логика пишется на C++, а интерфейс на QML:
Выбираем вариант Qt Quick Application — Swipe:
Выберем для теста все возможные компиляторы для сборки проекта:
Вначале скомпилируем проект под стандартный MinGW, который мы никак выше не настраивали (это и не нужно):
Теперь попробуем скомпилировать через компилятор Visual Studio:
Может возникнуть такая ошибка:
Теперь попробуем запустить под Android на эмуляторе:
Потом можно повторить историю с запуском приложения как универсальное приложение Windows:
Обратите внимание на то, что именно с UWP чаще всего возникают проблемы с запуском приложения из-за обновлений Qt и Visual Studio. У меня было много раз, когда после обновления первого или второго продукта UWP приложения с теми или иными сообщениями не хотели запускаться.
Update 2019-07-13. Если честно, то лично у меня работа с UWP приложениями в Qt почти всегда не работает после переустановки Qt и сопутствующих программ. И лишь танцы с бубном иногда спасают ситуацию. Но, например, в данный момент даже они не помогли, и еще до этапа компиляции проекта выводится вот такая ошибка:
В своё время была долгая беседа в баг-трекере по поводу этой ошибки: https://bugreports.qt.io/browse/QTCREATORBUG-21366, и программисты Qt никак не могли решить её. В тот раз всё разрешилось обновлением Visual Studio. В чем было дело: я не знаю. Может реально в обновлении было что-то исправлено, или это повлияло лишь косвенно. Но на данный момент такая же проблема у меня проявляется опять и как её решить я не знаю.
Дополнительные настройки
В этом разделе опишу свои собственные настройки Qt, которые не обязательны, но могут вам пригодиться.
Вертикальная линия для ограничения длины строк
Два пробела для отступов вместо четырех
Мне не нравится использовать 4 пробела в отступах: 2 пробела достаточно:
Дублирование строки
Найдем эту команду DeleteSelectedElements и удаляем сочетание горячих клавиш или меняем на другое:
Теперь конфликта нет, и комбинация Ctrl + D будет дублировать строку:
Шрифты
Мне нравится шрифт Roboto Mono : красивый, бесплатный (лицензия Apache 2.0), используется по умолчанию в Android. В общем, везде его использую.
После установки шрифтов в настройках Qt можно поменять шрифт:
Обидно, что расстояние между строчками немного уменьшилось.
Автосохранение
Также выставляю автосохранение файлов на минимальное время в одну минуту:
Статья обновлена 2019-07-13
Инструкция по установке Qt с компилятором Visual Studio, MinGW и возможностью программировать под Android на примере Windows 10.
Инструкция по установке Qt с компилятором Visual Studio, MinGW и возможностью программировать под Android на примере Windows 10.
Статьи из цикла
В статье рассказывается как запускать приложения, созданные в 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 и найдем там наше приложение:
Если мы его запустим, то получим ошибку:
Первый способ — Официальная утилита windeployqt
Перейти можно с помощью команды cd :
Скомпилируйте в режиме Release ваше приложение. Для примера я создал простое Qt Widgets Application и скомпилировал под MinGW компилятором:
Найдите папку, в которой находится скомпилированный EXE файл. Например, в моем случае это папка D:\Harrix\Projects\Qt\untitled\_build\release :
Теперь можно в командной строке вызвать windeployqt с указанием папки с EXE файлом:
Теперь в папке добавились нужные файлы:
После этого приложение должно запуститься. Настоятельно рекомендую проверить работоспособность приложения на чистом компьютере без установленной Qt.
Стоит обратить внимание на то, что windeployqt может копировать лишние файлы. От них можно избавиться, потихоньку удаляя файлы из папки на чистом компьютере.
Второй способ — Ручной
Начало решения проблемы
Мы же хотим, чтобы приложение запускалось на других компах? Поэтому надо в окончательном виде выдавать приложение, а не в режиме отладки.
Внизу, над зеленым треугольником выбираем режим Release :
Запускаем приложение, нажатием на зеленый треугольник:
Как видим, через некоторое время запустилось привычное нам приложение. Но теперь *.exe файл появился в папке, которое мы указывали для Release :
Заходим в эту папку (у меня это C:\Qt\build-Example-Desktop_Qt_5_2_0_MinGW_32bit-Release ):
Нахождение DLL и других файлов
Итак, приложение ругается на отсутствие Qt5Core.dll (у вас может быть цифра другая, если в момент чтения статьи вышла иная версия Qt). Где этот файл искать?
Найдите папку, в которую устанавливался Qt. У меня это папка C:\QtQt5.2.0
В ней будет папка компилятора MinGW:
В ней находим главную папку bin :
Ура! Но рано радоваться. Если мы запустим на компе, где нет Qt, то приложение выдаст ошибку, так как не может найти библиотеки. Надо скопировать еще несколько файлов. Помните основную папку Qt? Переходим в неё:
Там есть папка Tools :
В ней есть папка QtCreator :
Скопируйте файл qt.conf в папку с *.exe файлом:
Теперь перейдите в папку с компилятором:
Здесь показан принцип, как находить нужные DLL. Если вы используете какие то другие компоненты, например, QWebVie w, то вам будут нужны еще другие DLL, которые вы находите аналогичным способом.
Внимание! Иногда описанный выше способ не помогает. Вроде скопировали все DLL, что вам могли пригодиться, приложение даже запускается, но вы видите лишь белый экран, например, или приложение вообще не появляется, но в диспетчере задач появляется.
Статья обновлена 2018
В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.
В статье рассказывается как запускать приложения, созданные в Qt без самого Qt Creator. Или же приложения должны запускаться на компах, где нет Qt.