Урок №1. Введение в Qt и установка Qt Creator
Обновл. 18 Янв 2020 |
В этом уроке мы познакомимся с кроссплатформенным фреймворком 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 или Mac:
После окончания загрузки переходим в папку с необходимым нам файлом, нажимаем по нему правой кнопкой мыши и выбираем «Свойства». В закладке «Основные» видим «Имя», «Тип», «Размер файла», а также наименование родительской папки:
Переходим на вкладку «Права» и ставим галочку в поле «Разрешить выполнение файла как программы»:
Закрываем «Свойства» и запускаем программу.
Шаг №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 установлен.
Установка через командную строку в Linux
Ещё одним альтернативным и простым способом установки Qt Creator в Linux на основе Debian является установка из пакетов. Если при работе с Linux вы используете терминал, то перед скачиванием и установкой Qt Creator программа запросит пароль sudo пользователя. Только после этого начнётся скачивание и извлечение файлов. Обычно пакты Linux не содержат последней версии Qt и их необходимо обновить. Ниже приведен алгоритм действий, позволяющий за 4 шага установить Qt Creator через терминал.
Шаг №1. Обновление:
Шаг №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-аккаунта. Можно смело нажимать 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-проект консольного приложения. Давайте рассмотрим его подробнее:
Как настроить Qt для кросс-компиляции под Linux для Windows?
Я хочу скомпилировать библиотеки Qt (и, в конечном итоге, мое приложение) для цели Windows x86_64 с помощью хост-машины Linux x86_64. Я чувствую, что я близок, но у меня может быть фундаментальное непонимание некоторых частей этого процесса.
я начал с установки всех пакетов mingw на моей машине Fedora, а затем изменил win32-g++ qmake.conf, чтобы соответствовать своей среде. Однако, похоже, я застрял с некоторыми, казалось бы, очевидными параметрами настройки для Qt: -platform и -xplatform . Документации Qt говорит, что -platform должна быть архитектура хост-машины (где вы компилируете) и -xplatform должна быть целевой платформой,для которой вы хотите развернуть. В моем случае я установил -platform linux-g++-64 и -xplatform linux-win32-g++ где linux-win32-g++ — это моя измененная конфигурация win32-g++.
моя проблема в том, что после выполнения configure с этими параметрами я вижу, что он вызывает компилятор моей системы вместо кросс-компилятора (x86_64-w64-mingw32-gcc). Если я опущу и set -platform для моей целевой спецификации (linux-win32-G++) он вызывает кросс-компилятор, но затем ошибки, когда он обнаруживает, что некоторые связанные с Unix функции не определены.
вот некоторые результаты моей последней попытки:http://pastebin.com/QCpKSNev.
при кросс-компиляции чего-то вроде Qt для Windows с хоста Linux, должен ли родной компилятор когда-нибудь вызывается? То есть, во время перекрестного процесса компиляции не следует ли использовать только кросс-компилятор? Я не понимаю, почему сценарий настройки Qt пытается вызвать собственный компилятор моей системы, когда я указываю .
если я использую кросс-компилятор mingw, когда мне придется иметь дело с файлом спецификаций? Файлы спецификаций для GCC по-прежнему остаются для меня загадкой, поэтому мне интересно, поможет ли мне какой-то фон здесь.
в общем, за указание кросс-компилятора в моем qmake.conf, что еще мне нужно рассмотреть?
5 ответов
просто использовать M cross environment (MXE). Это избавляет от боли весь процесс:
Build Qt для Windows, его зависимости и инструменты кросс-сборки; это займет около часа на быстрой машине с приличным доступом в интернет ; загрузка составляет около 500 МБ:
перейти к каталог вашего приложения и добавьте инструменты кросс-сборки в путь переменные среды:
запустите инструмент генератора Qt Makefile, затем постройте:
вы должны найти двоичный файл в./ каталог выпуска:
заметки:
используйте главную ветвь репозитория MXE; кажется, что он получает гораздо больше любви от группа разработчиков.
выход 32-разрядный статический двоичный файл, который будет хорошо работать на 64-разрядных Windows.
(это обновление ответа @Tshepang, поскольку MXE эволюционировал с момента его ответа)
Сборка Qt
вместо make qt чтобы построить Qt, вы можете использовать MXE_TARGETS для управления целевой машиной и цепочкой инструментов (32 — или 64-бит). MXE начал использовать .static и .shared как часть целевого имени, чтобы показать, какой тип lib вы хотите построить.
в первоначальном ответе @Tshepang он не указал MXE_TARGETS , и используется значение по умолчанию. На когда он написал ответ, значение по умолчанию было i686-pc-mingw32 , сейчас это i686-w64-mingw32.static . Если вы явно установили MXE_TARGETS до i686-w64-mingw32 , минуя .static , предупреждение печатается, потому что этот синтаксис теперь устарел. Если вы попытаетесь установить цель в i686-pc-mingw32 , он покажет ошибку, поскольку MXE удалил поддержку MinGW.org (т. е. i686-pc-mingw32).
под управлением qmake
как мы изменили MXE_TARGETS , the /usr/i686-pc-mingw32/qt/bin/qmake команда больше не будет работать. Теперь, что вам нужно сделать есть:
если вы не указать MXE_TARGETS сделайте так:
обновление: новое значение по умолчанию теперь i686-w64-mingw32.static
хорошо, я думаю,что я понял это.
Кажется, что «изначально» при запуске configure (with-xtarget и т. д.), он настраивает затем запускает ваш gcc «hosts» для создания локального двоичного файла ./ bin / qmake
затем вы запускаете нормальный «make», и он строит его для компилятор MinGW
только если вам нужно использовать что-то другое, кроме msvcrt.dll файлы (по умолчанию). Хотя я никогда не использовал ничего другого, поэтому я не знаю наверняка.
для компиляции Qt, необходимо запустить его configure скрипт, указывающий хост-платформу с -platform (например, -platform linux-g++-64 Если вы строите на 64-битном linux с компилятором g++) и целевой платформы с -xplatform (например, -xplatform win32-g++ если вы пересекаете компиляцию в windows).
Я также добавил этот флаг: -device-option CROSS_COMPILE=/usr/bin/x86_64-w64-mingw32- который указывает префикс используемой мной цепочки инструментов, который будет добавлен к » gcc » или » g++» во всех файлах Makefile, которые создают двоичные файлы для окна.
наконец, вы можете получить проблемы при строительстве icd, который, по-видимому, используется для добавления поддержки ActiveX в Qt. Вы можете избежать этого, передав флаг -skip qtactiveqt для скрипта configure. Я получил это из этого отчета об ошибке:https://bugreports.qt.io/browse/QTBUG-38223
вот вся команда configure, которую я использовал:
Что касается вопросов yout:
1 — Да. Абориген компилятор будет вызван для создания некоторых инструментов, необходимых в процессе сборки. Может быть, такие вещи, как qconfig или qmake, но я не совсем уверен, какие именно инструменты.
2 — к сожалению. Я понятия не имею, какие файлы спецификаций находятся в контексте компиляторов =/ . Но, насколько я знаю, тебе не придется иметь с этим дело.
3 — Вы можете указать префикс кросс-компилятора в командной строке configure вместо того, чтобы делать это в qmake.файл conf, как сказано выше. И существует также эта проблема с idc, чей обходной путь я также упомянул.
другой способ кросс-компиляции программного обеспечения для Windows на Linux-это цепочка инструментов mingw-w64 на Archlinux. Он прост в использовании и обслуживании и предоставляет последние версии компилятора и множество библиотек. Я лично считаю, что это проще, чем MXE, и, похоже, быстрее принимает новые версии библиотек.
сначала вам понадобится машина на основе arch (достаточно виртуальной машины или контейнера docker). Это не обязательно должен быть Arch Linux, производные также будут делать. Я Manjaro Линукс. Большинство пакетов mingw-w64 недоступны в официальных репозиториях Arch, но есть много в AUR. Менеджер пакетов по умолчанию для Arch (pacman) не поддерживает установку непосредственно из AUR, поэтому вам нужно будет установить и использовать оболочку Aur, такую как pacaur или yaourt. Затем установка MinGW-w64 версии библиотек Qt5 и Boost так же проста, как:
это также установит цепочку инструментов mingw-w64 ( mingw-w64-gcc ) и другие зависимости. Кросс-компиляция проекта Qt для windows (x64) тогда так же проста, как:
чтобы развернуть программу, вам нужно будет скопировать соответствующие библиотеки DLL из /usr/x86_64-w64-mingw32/bin/ .
чтобы получить 32-битную версию, вам просто нужно использовать . Проекты на основе Cmake работают так же легко с x86_64-w64-mingw32-cmake . Этот подход работал очень хорошо для меня, был самым простым в настройке, обслуживании и расширении. Это также хорошо сочетается со службами непрерывной интеграции. Есть докер изображения слишком доступен.
например, предположим, я хочу построить QNAPI subtitle downloader GUI. Я мог бы сделать это в два шага:—9—>
1) Запустите контейнер docker:
2) клонировать и компилировать QNapi
вот именно! Во многих случаях это будет так легко. Добавление собственных библиотек в репозиторий пакетов (AUR) также просто. Вам нужно будет напишите файл PKBUILD, который является интуитивно понятным, как он может получить, см.mingw-w64-rapidjson, например.