Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.3K

Мотивация

До присоединения 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.

Теги:
Хабы:
+1
Комментарии4

Публикации

Истории

Работа

QT разработчик
5 вакансий
Программист C++
87 вакансий

Ближайшие события

27 марта
Deckhouse Conf 2025
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань