Установка 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/

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

Шаг 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.

Закрываем QtCreator

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

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

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

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

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

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

Шаг 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(<urllib3.connection.HTTPSConnection object at 0x0000024FF62CB890>, ‘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 наш проект. В настройках проекта добавляем пресет.

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

Заключение.

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

  • некоторых компонентов Qt нет в репозитории Conan.io, придется собирать отдельно;

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

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


ссылка на оригинал статьи https://habr.com/ru/articles/876802/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *