Установка Qt на Windows без регистрации и VPN. Часть 1. VisualStudio Community + Conan.io

Мотивация

До присоединения Qt Group к санкциям, для установки Qt Framework and Tools было достаточно скачать Qt Online Installer, ввести данные учетной записи и выбрать интересующие компоненты в меню. Ныне приходится выбирать из нескольких вариантов установки: прибегнуть к помощи одного из пакетных менеджеров или собрать из исходников. У каждого варианта есть свои плюсы и минусы. В этой статье рассмотрим установку через Conan — один из наиболее популярных пакетных менеджеров для с++ .

Целевая операционная система: Windows 10

Шаг 0. Установка компилятора

Скачиваем с официального сайта VisualStudio Community

https://visualstudio.microsoft.com/ru/downloads/

Запускаем инсталлятор (для работы понадобится набор «Разработка классических приложений С++»)

2e92c2c20635587f9d5fcf23c5f767a1.png

Шаг 1. Скачать QtCreator и создать проект

QtCreator можно получить из github репозитория https://github.com/qt-creator/qt-creator/releases/tag/v15.0.1

Распаковать архив с бинарниками можно в любую удобную для работы директорию.

В поддиректории qtcreator-windows-x64-msvc-15.0.0\bin будет лежать исполняемый файл qtcreator.exe

Запускаем QtCreator и создаем проект, например: conan_qml.

f4d11cb4f0b1b903ecb9ebac8b2031ac.png

Закрываем QtCreator

Шаг 2. Установка python и pip

Забираем очередной релиз с официального сайта https://www.python.org/downloads/

Выбираем кастомную установку

e738396f9462ed51b5d3486335604415.png

Проверяем, что будет установлен pip

193e43b850b7e2fd768edf9408749a9a.png

Жмем next, запускаем установку, ждем завершение установки.

Добавляем путь к дирректории с python (у меня это C:\Program Files\Python312) в переменную окружения PATH. Должно получиться как-то так:

4574d586b3a59525c5a68fd47370570f.png

Шаг 2. Установка и настройка conan

Ставим пакетный менеджер conan через пакетный менеджер pip:)

pip install conan==2.10.2

Проверяем что conan доступен:

conan -v

Conan version 2.10.2

Настраиваем профиль conan:

conan profile detect -f

detect_api: Found msvc 17

Detected profile:

[settings]

arch=x86_64

build_type=Release

compiler=msvc

compiler.cppstd=14

compiler.runtime=dynamic

compiler.version=194

os=Windows

Профиль будет сохранен в директории C:\Users\Имя пользователя\.conan2\profiles\default

Шаг 3. Получение библиотек

Переходим в директорию conan_qml. Открываем cmd в этой директории (в адресной строке проводника стирается путь, вводится три буквы cmd, нажимается клавиша enter).

Проверяем какие версии Qt доступны (сейчас доступны версии начиная с 5.15.6 до qt/6.7.3):

conan search qt

Мне нужна версия qt/5.15.12, поэтому будем устанавливать её.

Создаем файл conanfile.py в директории conan_qml

from conan import ConanFile

from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps

import os

class ExampleRecipe (ConanFile):

    generators = «CMakeDeps», «CMakeToolchain»

    # Binary configuration

    settings = «os», «compiler», «build_type», «arch»

    options = {«shared»: [True, False], «fPIC»: [True, False]}

    default_options = {«shared»: False, «fPIC»: True}

    def requirements (self):

        self.requires («qt/5.15.12»)

    def layout (self):

        self.folders.build = «cmake-build-{}».format (str (self.settings.build_type).lower ())

        self.folders.generators = os.path.join (os.path.curdir, «conan_find_libs»)

        self.cpp.build.libdirs = os.path.join (self.folders.generators, «lib») # write the .libs to the library folder under build

        self.cpp.build.bindirs = os.path.join (self.folders.generators, «bin») # write the .dll to the bin folder under build

        self.folders.imports = self.folders.build

        self.folders.source = «src»

    # Настраиваем опции пакетов

    def configure (self):

        # Oбщие настройки

        self.options[«qt»].shared = True

    def source (self):

        # In the source method, the current directory == self.source_folder

        assert self.source_folder == os.getcwd ()

    # copy the libs to build/bin and build/lib folders

    def generate (self):

        print («CWD», os.getcwd ())

        print («SOURCE», self.source_folder)

        print («BUILD», self.build_folder)

        print («BUILD2», self.cpp.build)

        print («LIBDIRS», self.cpp.build.libdirs)

        print («BINDIRS», self.cpp.build.bindirs)

    def package (self):

        cmake = CMake (self)

        cmake.install ()

    def deploy (self):

        self.copy (self,»*», src=self.package_folder, dst=self.deploy_folder)

Следует обратить внимание на строку:

self.folders.generators = os.path.join (os.path.curdir, «conan_find_libs»)

Тут указано куда будут помещены будущие cmake файлы для поиска пакетов.

Запускаем установку библиотек с флагами определяющими:

— тип сборки (build_type=Release\Debug);

— запуск сборки бинарников локально, если их нет на сервере (--build=missing);

— директория для размещения бинарных файлов (--deployer=full_deploy).

conan install. -s build_type=Debug --build=missing --deployer=full_deploy

Какое-то время conan будет искать подходящие зеркала:

qt/5.15.12: WARN: network: Error downloading file https://download.qt.io/official_releases/qt/5.15/5.15.12/single/qt-everywhere-opensource-src-5.15.12.tar.xz: 'HTTPSConnectionPool (host='download.qt.io', port=443): Max retries exceeded with url: /official_releases/qt/5.15/5.15.12/single/qt-everywhere-opensource-src-5.15.12.tar.xz (Caused by ConnectTimeoutError (, 'Connection to download.qt.io timed out. (connect timeout=30)'))'

qt/5.15.12: Waiting 5 seconds to retry…

После завершения сборки и установки пакетов, в директории full_deploy будут лежать собранные библиотеки, в conan_find_libs будут лежать конфигурационные файлы для cmake.

Добавляем полный путь до full_deploy в переменную PATH.

Шаг 5. Собрать «Hello qt\qml»

Возвращаемся в дирректорию conan_qml. Копируем файл CmakePresets.json из поддиректории conan_find_libs, в текущую директорию проекта conan_qml.

Открываем в QtCreator наш проект. В настройках проекта добавляем пресет.

cd00ad66dbbff26ad4d1ea06f795d9fa.png

После завершения конфигурации проекта, можно запустить наш «Hello qt qml»

a8cd50b547f766f5b291c1beeba9f7a1.png

Заключение.

Предложенный способ установки Qt относительно прост, но имеет и свои недостатки:

  • Не удалось, быстро собрать Qt из Conan c помощью mingw64.

    В следующей части будем разбираться с установкой Qt через pacman.

© Habrahabr.ru