December 20, 2024

Qt 6.8.1 static build. Статическая сборка Qt 6.8 под Microsoft Visual Studio 2022 (msvc2022, Windows x64)

Telegram Teletype vc.ru dzen.ru

ОС: Windows 11
Microsoft Visual Studio 2022
Qt 6.8.1

1. Скачиваем архив исходников Qt для Windows (qt-everywhere-src-6.8.1.zip) с официального сайта qt.

2. Создаем каталог, например, c:\Qt\Qt6.8.1-x64-msvc2022-static\6.8\Src и распаковываем в него содержимое архива исходников. Сборка в дальнейшем будет привязана к данному каталогу и букве диска. Получим подкаталоги 6.8\Src\qtbase, 6.8\Src\coin и т.д.).

3. Устанавливаем:
StrawberryPerl https://strawberryperl.com
Python 3 (https://www.python.org)
Node.js (https://nodejs.org)
ninja (https://github.com/ninja-build/ninja/releases)

4. Запускаем командную строку (cmd) с правами администратора и последовательно выполняем в ней следующие команды:

Задаем системные переменные Qt:

set QTDIR=c:\Qt\qt6.8.1-x64-msvc2022-static\6.8\Src\qtbase
set PATH=c:\Qt\qt6.8.1-x64-msvc2022-static\6.8\Src\qtbase\bin;%PATH%

Системная переменная пути к LLVM:

set PATH=c:\Program Files\LLVM\bin;%PATH%
set LLVM_INSTALL_DIR=C:\Program Files\LLVM

Системные переменные пути к ninja и gnuwin32 (для QtPdf):

set PATH=c:\Qt\Tools\Ninja;%PATH%
set PATH=c:\Program Files (x86)\GnuWin32\bin;%PATH%

Для Microsoft Visual Studio 2022 (msvc2022):

cd "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build"
vcvarsall.bat amd64

Конфигурация:

configure -debug-and-release -static -static-runtime -opensource -confirm-license -platform win32-msvc -nomake examples -nomake tests -qt-zlib -qt-libpng -qt-libjpeg -prefix "c:\Qt\qt6.8.1-x64-msvc2022-static\6.8" -skip qtandroidextras -skip qtactiveqt -skip qtgamepad -skip qtmacextras -skip qtlocation -skip qtlottie -skip qtquick3d -skip qtquick3dphysics -skip qtquickcontrols -skip qtquickcontrols2 -skip qtquickeffectmaker -skip qtquicktimeline -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtspeech -skip qtvirtualkeyboard -skip qtwayland -skip qtwebengine -skip qtx11extras -no-dbus -no-openssl -skip qtgraphs -skip qdoc

где:

-prefix "c:\Qt\qt6.8.1-x64-msvc2022-static\6.8" - путь, куда будет помещена сборка,
Пропущенные модули:
-skip qtandroidextras -skip qtactiveqt -skip qtgamepad -skip qtmacextras -skip qtlocation -skip qtlottie -skip qtquick3d -skip qtquick3dphysics -skip qtquickcontrols -skip qtquickcontrols2 -skip qtquickeffectmaker -skip qtquicktimeline -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtspeech -skip qtvirtualkeyboard -skip qtwayland -skip qtwebengine -skip qtx11extras -skip qtgraphs -skip qdoc
-nomake examples -nomake tests - отказ от сборки тестов и примеров
-platform win32-msvc - выбор платформы
-confirm-license - подтверждение согласия с лицензией
-static -static-runtime - статическая сборка

Переход в каталог сборки:

cd c:\Qt\qt6.8.1-x64-msvc2022-static\6.8\Src

Сборка:

cmake --build . --parallel

Установка:

cmake --install .

Сборка и установка документации (не прошло):

cmake --build . --target docs
cmake --build . --target install_docs

После сборки каталог Src можно удалить, там лежат исходники и более 100 Гигабайт промежуточных файлов.

Возможные ошибки:

  • QtPdf won't be built. Python3 html5lib is missing.
    Необходимо установить html5lib:
pip install html5lib

После сборки каталог Src будет занимать больше 100 Гигабайт. Его можно будет удалить.

QDoc собрать статически не удалось.

QtWebengine не поддерживает статическую сборку.

LLVM с официального сайта не подходит для данной статической сборки. Будет всё равно выводиться предупреждение.
Оказывается необходимо выбрать с сайта qt (https://qt-mirror.dannhauer.de/development_releases/prebuilt/libclang/) определенную версию LLVM (собранную разработчиками Qt) со статическими библиотеками, которых нет в официальной версии LLVM. Мне это сделать не удалось: выводились ошибки при сборке самого Qt6.

Поддержать проект (подарком):
ЮMoney 4100 1188 9778 9041
карта 5599 0021 0667 6341

Telegram Teletype vc.ru dzen.ru