Windows
February 12

QT и санкции:  вращаем правильно

Если вы занимались разработкой на C++ то точно знаете что такое Qt Framework. С недавних пор компания которая им владеет заблокировала доступ ко всем своим продуктам и обновлениям c территории РФ. Рассказываю что делать с мнением этой замечательной компании, куда его надеть и в какую сторону вращать.

Невозможный скриншот, по мнению компании QT (Trolltech)

Чуханские страсти

Сей недружественный шаг создал проблемы в основном лишь простым смертным разработчикам и мелким студиям, поскольку фреймворк Qt успел стать стандартом «де-факто» для небольших проектов на C++ за последние 10 лет, заменив собой знаменитый Delphi.

Фриланс, аутсорс, заказная разработка — вот это все.

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

Да, если вы еще не поняли — «Qt Framework» это опенсорс, исходный код открыт, налетай собирай на здоровье.

Если у вас есть достаточный ресурс, то именно так и стоит поступить в нынешних реалиях — собирать из исходников весь проект Qt целиком. Особенно если речь про крупный или государственный проект.

Но к сожалению для небольшого домашнего проекта (а их невероятно много на этом фреймворке) затраты на сборку всего этого цирка c конями Qt вместе с модулями и средой разработки «QtCreator» слишком высоки, поэтому придется ставить готовую сборку.

Linux/BSD

Все описанное ниже актуально в первую очередь для разработки на Windows, поскольку для Linux/BSD и фреймворк Qt и его средства разработки собираются и поддерживаются силами ментейнеров дистрибутивов, без участия компании «Qt Company» (Trolltech) и ее #банутого мнения по поводу санкционной политики.

Нормальные герои всегда идут в обход

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

Если вы откроете сайт компании QT с территории РФ, увидите примерно такое:

Видите ссылки на скачивание? Или хотя-бы предупреждение для РФ? Или официалное объявление? Ничего нет, просто тихий бан.

А вот так сайт выглядит через европейский или американский прокси:

Вот такое западло.

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

Но как видите долбо#бизм неизлечим:

Напоминаю, компания QT Company (Trolltech) — не государственная, не имеет отношения к политике и точно не того масштаба чтобы подвергаться каким-либо гонениям со стороны общества за контакты с РФ.

Это не Фейсбук/Мета а просто небольшая ИТ-компания (по меркам отрасли), выстроенная вокруг одного проекта.

Поэтому все их действия — их личная инициатива.

Another Qt installer(aqt)

Разумеется что я такой не один и уже написаны подробные руководства для обхода всех этих «чуханских недосанкций», откуда и было взято несколько идей. Лучшим вариантом для небольших частных проектов по моему скромному мнению является использование утилиты aqtinstall:

This is a utility alternative to the official graphical Qt installer, for using in CI environment where an interactive UI is not usable, or just on command line. It can automatically download prebuilt Qt binaries, documents and sources for target specified, when the versions are on Qt download mirror sites.

Если кратко и по-русски, то с помощью этой штуки осуществляется автоматическое развертывание сред разработки Qt в виртуализированных средах (Docker ага), но мы ее будем использовать для более коварных целей.

Установка

Утилита aqt написана на Python, поэтому для работы на Windows его (Python) еще нужно будет установить. Хотя это действие не представляет каких-либо проблем:

просто скачиваете с официального сайта инсталлятор и запускаете.

Проверьте только что Python доступен из окружения:

Дальше с помощью пакетного менеджера pip (он присутствует в официальных сборках Python для Windows по-умолчанию) устанавливаете саму aqt:

pip install aqtinstall

После установки должна быть доступна команда aqt из консоли:

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

Создаете файл aqt.cfg с вот таким содержанием:

[aqt]
baseurl: https://qt-mirror.dannhauer.de/

[requests]
max_retries_on_checksum_error: 1
max_retries_to_retrieve_hash: 1
INSECURE_NOT_FOR_PRODUCTION_ignore_hash: True

[mirrors]
fallbacks:
    https://mirrors.ocf.berkeley.edu/qt
    https://qt.mirror.constant.com/
    https://ftp.acc.umu.se/mirror/qt.io/qtproject/
    https://qtproject.mirror.liquidtelecom.com/
    https://ftp.jaist.ac.jp/pub/qtproject
    http://ftp1.nluug.nl/languages/qt
    https://mirrors.dotsrc.org/qtproject
    https://mirror.yandex.ru/mirrors/qt.io

И запускаете:

aqt -c aqt.cfg list-tool windows desktop

Команда выше выдаст список доступных к установке инструментов разработки, в том числе и QtCreator.

Для получения списка доступных версий Qt:

aqt -c aqt.cfg list-qt windows desktop

Список выглядит примерно так, я устанавливал последнюю версию из доступных:

На момент написания статьи, последняя доступная версия Qt это 6.7.0

Для установки выбранной версии выполните:

aqt -c aqt.cfg install-qt windows desktop 6.7.0 win64_msvc2019_64 -m all

Где win64_msvc2019_64 это профиль, актуальный для обычной десктопной разработки, а -m all это указание установить все доступные модули Qt.

Все доступные варианты профилей можно увидев добавив параметр --arch с указанием версии Qt:

Для скачивания и установки QtCreator необходимо выполнить команды:

aqt -c aqt.cfg install-tool windows desktop tools_qtcreator
aqt -c aqt.cfg install-tool windows desktop tools_qtcreator_kits_and_debuggers
aqt -c aqt.cfg install-tool windows desktop tools_qtcreator_gui

Дополнительно можно установить внешний CMake:

aqt -c aqt.cfg install-tool windows desktop tools_cmake

И Ninja:

aqt -c aqt.cfg install-tool windows desktop tools_ninja

Имейте ввиду что фреймворк Qt большой и даже в собранном виде (те без стадии компиляции из исходников) занимает очень много места на диске:

Если помимо Qt вам нужна еще и среда разработки «QtCreator» — готовьте дополнительные гигабайты:

Особенности установки

Установка Qt и инструментов разработки с помощью описанного выше метода не производит каких-либо записей в реестре системы, не создает ярлыков на рабочем столе или переменных окружения — только скачивание и распаковка архивов с необходимыми библиотеками и бинарниками.

Вся последующая настройка установленных инструментов — на совести разработчика.

Ниже на тестовом проекте я покажу как производится настройка с нуля.

Установщик aqt использует следущую схему каталогов:

<корневой каталог> - текущий каталог, из которого производится запуск утилиты aqt
|___ x.x.x - каталог с выбранной версией Qt
|___ Tools - каталог с инструментами разработки ( QtCreator, Cmake и т.д.)

Чтобы было понятно где искать все что вы скачали командами выше.

Отладчик

Для того чтобы полноценно пользоваться средой разработки «QtCreator» в Windows, вам понадобится специальный отладчик CDB:

Qt Creator supports native debuggers for debugging compiled code. On most supported platforms, you can use the GNU Symbolic Debugger (GDB). On Microsoft Windows, when using the Microsoft tool chain, you need the Microsoft Console Debugger (CDB)

Больше про отладчики и их поддержку в QtCreator тут. Я лично использовал версию из состава WDK, который необходимо скачать и установить отдельно.

При корректной установке отладчика у вас появится папка «Debuggers» внутри «Windows Kits»:

Запуск

Полный путь до бинарника, запускающего среду разработки выглядит так:

Tools\QtCreator\bin\qtcreator.exe

Стартовый экран сразу после запуска:

Первое что необходимо сделать это связать QtCreator с самим фреймворком Qt, для этого, из главного меню выбираем:

Правка -> Preferences -> Комплекты

затем вкладку «Профили Qt»:

Нажимаем «Добавить» — появится диалог выбора файла, указываете qmake.exe который находится в подкаталоге bin (см путь на скриншоте). После выбора появится новая запись в разделе «Manual».

Затем переключаемся на вкладку «Комплекты»:

Нужно установить 64-битный комплект «по-умолчанию», указать «корень образа» — путь до каталога с Qt и проверить что отладчик определился правильно.

Также необходимо будет указать путь до CMake, оба актуальных варианта (внешний и из Visual Studio) показаны вот тут:

Тестовый проект

В качестве тестового проекта для проверки настройки среды, я взял простенький клон стандартного «Блокнота»:

Simple text editor. Based on official Qt6 Notepad example.

Видимо написанный китайским студентом в рамках учебного курса.

Забираем:

git clone https://github.com/zurg3/notepad.git

Если у вас по какой-то причине еще нет установленного Git то вы не настоящий разработчик скачать его можно тут.

Открываем файл CMakeLists.txt в QtCreator:

Запустится автоматическая сборка проекта, увидеть воочию результат своих трудов можно по кнопке:

Выглядит как-то так: