- Кросс-компиляция Qt5 под Linux для Win x32/x64/static/shared
- 0. Сценарий сборки
- 1. Предварительная подготовка
- 2. Установка среды кросс-компиляции MXE
- Развертывание Qt и QML приложений в Linux и Windows
- Введение
- Для начало немного теории
- Зачем это нужно?
- Теперь немного описания
- Давайте рассмотрим пример
- MyApp (main.cpp)
- MyApp (main.qml)
- Урок №1. Введение в Qt и установка Qt Creator
- Введение в Qt
- Установка Qt Creator в Linux
- Установка Qt Creator через командную строку в Linux
- Установка Qt Creator в Windows
- Создание проекта
Кросс-компиляция Qt5 под Linux для Win x32/x64/static/shared
Документирование получения системы кросс-компиляции под Linux для Windows x32/x64/static/shared и сборка последней на момент описания Qt 5.4.1 в лайт-версии (для указанных четырех целей). Для себя, глубоко-обожаемого, ну и для пользы обществу.
Многие разработчики приходят к выводу, что использование *nix (в частности Linux) более предпочтительно для разработки приложений, используя фрэймворк Qt. И тому есть причины. Qt изначально ориентирована на *nix инструментарий, типа autotool, make, perl… И второй момент, под никсами есть прекрасный инструмент — valgrind, под виндой порта пока его не видел. Ну и последняя причина: просто удобно иметь набор инструментария для создания приложений под различные целевые платформы — в одном месте.
0. Сценарий сборки
Все шаги делаем последовательно. Желательно не объединять все скрипты в последовательную сборку по причине необходимости промежуточного «человечного» контроля. Разные дистрибутивы Линуха, разные среды исполнения, наборы инструментариев… Простой алгоритм: сделал очередной шаг, убедился в отсутствии ошибок, пошел делать следующий. Итак, сам сценарий:
- 1. Предварительная подготовка
- 2. Установка среды кросс-компиляции MXE
- 3. Загрузка и настройка Qt 5.4.1
- 4. Сборка комплектов Qt 5.4.1 для четырех целей (см. сабж)
- 5. Прописка собранного в QtCreator
1. Предварительная подготовка
У вас установлен дистрибутив Линукса. Желательно все это делать на на продакшен-компе (не на живом Линуксе), а установленном в виртуальную машину. Я например, пользуюсь VMWare, но это дело вкуса. Выбор дистрибутива Линукса — так же дело вкуса. Лично я предпочитаю Gentoo Linux, собственно под ним всю эту кухню и настраиваю. Если есть сложности в настройке, у меня есть небольшая статейка по этому вопросу: «Установка и настройка Linux Gentoo под VMWare».
Итак, у вас есть настроенный Линукс и вы работаете не под рутом! Для дальнейшей работы вам нужно проверить присутствие следующих установленных пакетов, или доустановить:
Вся дальнейшая установка будет производиться в каталог $HOME/dev. Если у вас таковой присутствует — либо переименовываете его, либо внимательно правите скрипты, которые будут приведены далее. Для всех манипуляций со скачиваемыми внешними файлами/скриптами/библиотеками будет использован каталог $HOME/setup. Все замечания выше относительно $HOME/dev — в силе и к этому каталогу.
2. Установка среды кросс-компиляции MXE
Предварительное замечание об MXE. Это отличнейшая система сборки тулчейнов для кросс-компиляции. Но есть одно «но». В данный момент не существует стабильной ветки. Авторы до поры до времени вели две ветки в своем git-репозитарии — стабильную и «разработческую». Сейчас ветки объединены. Разработка идет ну очень активно — изменения сбрасываются чуть ли не раз 1-3 дня. А это чревато тем, что «то работает сборка, то не работает». Некоторые важные для меня библиотеки, в частности клиентская часть PostgreSQL, собираются без ошибок, но в нерабочем состоянии. Потратил неделю не исследование явных косяков. Исправляем эти «недочеты». Итак:
Должны получить в каталоге $HOME/setup следующий набор скриптов:
Источник
Развертывание Qt и QML приложений в Linux и Windows
Введение
В данной статье мы рассмотрим, как правильно собрать все зависимости qt для вашего приложения, которое было собрано динамически.
Для начало немного теории
Зачем это нужно?
Существует несколько способов сборки приложений, основные из них это:
Статическая сборка.
Статическая сборка подразумевает создание бинарника, в котором будут слинковоны все необходимые ему компоненты. Другими словами все что нужно для его работы будет лежать в нем. Такой подход удобен для маленьких консольных приложений, у которых мало зависимостей, в противном случае размер конечного бинарника будет крайне велик.
Динамическая сборка.
Отличается от статической тем, что в бинарнике будут лежать только исходные тексты вашего приложения (размер бинарника будет минимальный), но при выполнении такого приложения ему понадобятся сторонние библиотеки, которые использовались при его написании.
Теперь немного описания
Console-QtDeployer — это простая утилита, аналогичная windeployqt и macdeployqt . Но в отличие от аналогов имеет куда более гибкий интерфейс (флаги запуска) и более высокую скорость работы, к тому же она поддерживает 2 платформы windows и linux а это значит что теперь мы сможете собирать зависимости под windows на Linux и наоборот.
Давайте рассмотрим пример
Для примера я написал простое qt приложение с использованием qml — MyApp.
MyApp (main.cpp)
MyApp (main.qml)
MyApp слинкована динамически, то есть для работы ему требуются библиотеки qt.
Если попробовать запустить приложение, сразу после сборки мы получим ошибку:
Из сходных текстов мы видим, что приложение зависит от GUI библиотек qt и библиотек qml. Поиск и сборка всех ресурсов (библиотек и плагинов) займет очень много времени.
Чтобы сэкономить время и силы, мы воспользуемся утилитой CQtDeployer (скачать можно здесь )
или установить в Snap Store
После выполнения данной команды, вы получите полностью готовое для работы приложение с готовым лаунчером, который настроит все необходимое окружение для работы вашего приложения на всех машинах под управлением Linux.
Давайте подробнее рассмотрим некоторые из параметров CQtDeployer:
Опция | Описание |
---|---|
help / h | Показывает справку |
always-overwrite | Копирует файлы с заменой уже существующих |
-bin [list, params] | Развертываемый файл или папка. пример -bin /my/project/bin.exe |
-binDir [params] | Папка с развертываемыми файлами (с рекурсивным поиском). ВНИМАНИЕ! Этот флаг поддерживает только файлы ‘so’, ‘dll’ и ‘exe’. Если вы хотите развернуть бинарный файл Linux, используйте флаг ‘-bin’ |
-qmlDir [params] | Папка qml. пример -qmlDir /my/project/qml |
deploySystem | Копирует все библиотеки |
-qmake [params] | Путь к qmake. пример |
-qmake /Qt/5.11.1/gcc_64/bin/qmake | |
-ignore [list,params] | Список библиотек для игнорирования |
Пример -ignore libicudata.so.56,libicudata2.so.56 | |
-ignoreEnv [list,params] | Список путей для игнорирования. |
Пример -ignoreEnv /bad/dir,/my/bad/Dir | |
clear | Удаляет все старые файлы (с прошлого запуска) |
пример -runScript myApp.sh | |
allQmlDependes | Извлекает все библиотеки qml. |
(не рекомендуется, так как занимает много памяти) | |
-libDir [list,params] | Устанавливает дополнительные пути к библиотекам |
Пример -libDir /newLibs | |
-extraPlugin [list,params] | Устанавливает дополнительный путь для extraPlugin приложения |
-recursiveDepth [params] | Устанавливает глубину поиска библиотек (по умолчанию 0) |
-targetDir [params] | Устанавливает целевой каталог (по умолчанию это путь к первому развертываемому файлу) |
noStrip | Пропускает шаг strip |
noTranslations | Пропускает файлы переводов |
qmlExtern | Использует внешний сканер qml (qmlimportscaner) |
не работает без qmake и в snap | |
-verbose 3 | Показывает дебаг лога |
После выполнения cqtdeployer у вас появится папка Distro c уже готовым приложением со всеми его зависимостями содержимое этой папки должно выглядеть примерно следующим образом:
- myApp.sh — скрипт запуска вашего приложения
- bin — папка с вашим бинарником
- lib — папка со всеми необходимыми зависимости вашего приложения
- plugins — qt плагины, необходимые для работы приложения
- qml — зависимости qml.
- translations — стандартные переводы qt.
Таким образом можно подготовить ваше приложения для упаковки в deb или snap пакет, после чего можно приступить к его распространению. Учитывайте, что после выполнения cqtdeployer, ваше приложение необходимо запускать с помощью sh скрипта, который настроит для вашего приложения необходимое окружение.
Для Windows все точно так же. только в консоли нужно будет писать не cqtdeployer а %cqtdeployer%
Источник
Урок №1. Введение в Qt и установка Qt Creator
Обновл. 16 Сен 2021 |
На этом уроке мы познакомимся с кроссплатформенным фреймворком Qt и установим IDE для работы с ним.
Введение в Qt
Qt является кроссплатформенным (не зависящим от платформы/ОС) фреймворком для разработки приложений на языке С++. С помощью Qt были разработаны такие известные приложения, как: KDE, Opera, Google Earth и Skype. Впервые Qt был опубликован в мае 1995 года.
Qt5 подразумевает двойное лицензирование, а это означает, что Qt может быть использован в некоммерческих целях для создания приложений с открытым исходным кодом, а также как лицензия для коммерческих клиентов. За счет использования собственного фреймворка и мощного инструментария Qt позволяет быстро и удобно создавать собственные кроссплатформенные приложения. Кроме того, команды разработчиков получают возможность работать на разных платформах, используя при этом общие инструменты для разработки и отладки. Весь инструментарий Qt с открытым исходным кодом вы можете найти на сайте qt.io.
Изначально Qt был разработан норвежской компанией по разработке программного обеспечения Trolltech. В 2008 году компанию приобрела Nokia. Спустя четыре года в августе 2012 программные технологии Qt выкупила финская компания-разработчик Digia. Сейчас Qt развивается компанией QT Company, которая является дочерней компанией Digia, и как проект Qt под открытым исходным кодом с участием отдельных разработчиков и фирм.
Установка Qt Creator в Linux
Шаг №1: Мы будем устанавливать IDE с открытым исходным кодом. Для этого переходим по ссылке и выбираем самую свежую версию (на момент написания данной статьи — это Qt 5.13):
На этих уроках используется операционная система Linux (Debian 9.x 64-bit), поэтому мы скачиваем qt-opensourse-linux-x64-5.13.0.run , но вы также можете использовать соответствующие файлы Qt для Windows или macOS:
После окончания загрузки переходим в папку с необходимым нам файлом, нажимаем на него правой кнопкой мыши и выбираем «Свойства» . На вкладке «Основные» видим «Имя» , «Тип» , «Размер файла» , а также наименование родительской папки:
Переходим на вкладку «Права» и ставим галочку возле пункта «Разрешить выполнение файла как программы» :
Закрываем «Свойства» и запускаем программу.
Шаг №2: На следующем этапе установщик сообщает, что нам предоставлена версия с открытым исходным кодом Qt 5.13.0. Дальнейшая установка Qt предполагает регистрацию в Qt и создание Qt Account, который предоставляет доступ ко всем возможностям Qt. Кроме того, данное действие необходимо для проверки лицензии (коммерческая/некоммерческая). Если у вас уже есть учетная запись в Qt Account, то используйте кнопку «Next» .
Если учетной записи в Qt Account у вас еще нет, то её можно создать сейчас: для этого перейдите по соответствующей ссылке в установщике, и вы будете перенаправлены на сайт qt.io в соответствующий раздел, или просто используйте кнопку «Next» — вы сможете это сделать на следующем шаге:
Шаг №3: Здесь необходимо ввести логин и пароль от Qt Account или создать Qt Account, если его у вас еще нет. Кнопка «Next» переводит нас на следующий этап:
Добро пожаловать в настройки Qt 5.13.0! Для перехода к следующему шагу нажимаем «Далее >» :
Шаг №4: Выбираем каталог для установки Qt 5.13.0. Обратите внимание, адрес каталога указывается латинскими буквами (без кириллицы) и без пробелов! После того, как выбрали каталог, нажимаем «Далее >» :
Шаг №5: Выбираем компоненты, которые хотим установить. Если на данном этапе у вас нет уверенности в выборе конкретных компонентов, то добавление и удаление можно будет сделать позже, после установки программы:
Шаг №6: Принимаем лицензионное соглашение:
И нажимаем на кнопку «Установить» :
Для завершения установки нажимаем «Завершить» . После завершения установки Qt Creator запустится самостоятельно (для этого необходимо поставить галочку возле пункта «Launch Qt Creator» ):
Вот примерно следующее вы должны увидеть при запуске Qt Creator:
Поздравляем! Qt Creator установлен.
Установка Qt Creator через командную строку в Linux
Еще одним альтернативным и простым способом установки Qt Creator в Linux на основе Debian является установка из пакетов. Если при работе с Linux вы используете терминал, то перед скачиванием и установкой Qt Creator программа запросит пароль пользователя root (команда sudo без дополнительных опций). Только после этого начнется скачивание и извлечение файлов. Обычно, пакеты Linux не содержат последней версии Qt и их необходимо обновить. Ниже приведен алгоритм действий, позволяющий за 4 шага установить Qt Creator через терминал в Linux.
Шаг №1: Обновление набора утилит для установки, удаления, обновления, поиска пакетов в Linux.
$ sudo apt update
Шаг №2: Скачивание и установка Qt.
$ sudo apt install qt5-default
Шаг №3: Установка Qt Creator.
$ sudo apt install qtcreator
Шаг №4: Установка тестовых программ.
$ sudo apt install qtbase5-examples qtdeclarative5-examples
Установка Qt Creator в Windows
Сначала нам нужно скачать установочный пакет Qt. Вы можете это сделать, обратившись к оф. сайту qt.io. Либо же воспользоваться альтернативным вариантом и скачать с какого-нибудь «зеркала» (например, c этого, полный список всех «зеркал» находится здесь):
Нажимаем на official_releases/ и переходим к online_installers/ :
Нажимаем на online_installers/ и скачиваем файл qt-unified-windows-x86-online.exe :
Запустив скачанный файл, видим перед собой приветствие «Qt Online Installer». Нажимаем «Next» :
Далее у нас спросят о наличии Qt Account. Можно смело нажимать «Skip» и двигаться дальше:
Затем снова «Далее» :
Теперь нам нужно указать путь установки Qt. Для простоты я выбрал C:\Qt :
На следующем шаге нам нужно выбрать набор компиляторов, которыми мы будем пользоваться на данных уроках. Я предлагаю ограничиться выбором пакета MinGW 7.3.0 32-bit , а остальные метки поставить так, как указано на скриншоте ниже:
После того, как инсталлятор скачает и установит все необходимые компоненты, можно будет перейти к непосредственному написанию кода для нашего приложения.
Создание проекта
Вначале нам необходимо создать проект. Сразу скажу, что наша программа будет консольным приложением. Для этого выберите «Файл» > «Создать файл или проект…» или можно воспользоваться сочетанием клавиш Ctrl+N :
Перед вами появится «Мастер настройки проектов». В левой колонке отметьте пункт «Приложение» , а затем в правой — «Консольное приложение Qt» :
На следующем шаге нужно будет указать имя для нашей будущей программы и папку, где будут располагаться файлы проекта. У меня это My_QtApplication и C:\dev\Qt_Project соответственно:
На следующем шаге без изменений, поэтому просто нажимаем кнопку «Далее» :
Теперь нам нужно выбрать набор компиляторов, который мы будем использовать для сборки нашего проекта. Я настоятельно рекомендую выбрать Desktop Qt 5.13.0 MinGW 32-bit (сняв при этом отметки с остальных, если они у вас есть):
На последнем шаге нажимаем «Завершить» :
Теперь вы можете увидеть автоматически сгенерированный Qt-проект консольного приложения. Давайте рассмотрим его детально:
Источник