Установка 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 (
, '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 c помощью mingw64.
В следующей части будем разбираться с установкой Qt через pacman.