Building Static Qt 6 for Desktop OpenGL with MinGW GCC 16.2 Статическая сборка Qt 6 для Desktop OpenGL с MinGW GCC 16.2
- Installation folder:
C:\Qt\6.12.0_static_mingw162— only ~496 MB - Clone time: ~2 minutes (shallow clone of
qtbaseonly) - Build time: ~20 minutes on an Intel Core i7-7700 with SSD
- Release stripped
.exe: ~30 MB (compresses down to ~12 MB in zip) with zero external DLL dependencies!
- Папка установки:
C:\Qt\6.12.0_static_mingw162— всего ~496 МБ - Время клонирования: ~2 минуты (только
qtbase) - Время сборки: ~20 минут на процессоре Intel Core i7-7700 с SSD
- Финальный сжатый (stripped)
.exe: ~30 МБ (около 12 МБ в архиве) без каких-либо внешних DLL!
1. Prerequisites 1. Необходимые инструменты
Before building, install the required toolchains and ensure their binary directories are added to your System PATH:
Перед началом сборки установите необходимые инструменты и убедитесь, что пути к ним добавлены в переменную PATH:
-
MinGW GCC 16.2.0 (WinLibs): Download from winlibs.com and extract to
C:\mingw64_16.2(Ninja is already included in WinLibs). MinGW GCC 16.2.0 (WinLibs): Скачайте с winlibs.com и распакуйте вC:\mingw64_16.2(утилита Ninja уже входит в комплект WinLibs). - CMake: Download and install from cmake.org (select "Add CMake to system PATH"). CMake: Скачайте и установите с cmake.org (выберите пункт "Add CMake to system PATH").
- Qt Creator: Download standalone installer from Qt Creator GitHub Releases. Qt Creator: Скачайте автономный установщик со страницы GitHub релизов Qt Creator.
2. Clone Only qtbase 2. Клонирование только модуля qtbase
Because you only need Desktop OpenGL, QWindow, and QtWidgets, you do not need the full umbrella Qt repository or Perl. Everything you need is inside qtbase:
Так как для работы нужны только Desktop OpenGL, QWindow и QtWidgets, вам не требуется клонировать весь репозиторий Qt или устанавливать Perl. Всё необходимое уже находится внутри qtbase:
mkdir C:\QtSource
cd C:\QtSource
# Shallow clone of qtbase only (~150 MB download)
git clone --depth 1 -b v6.12.0 https://code.qt.io/qt/qtbase.git
3. Configure for Static Build 3. Конфигурация статической сборки
Create a separate build folder and configure Qt using configure.bat:
Создайте отдельную папку для сборки и запустите конфигурацию с помощью configure.bat:
mkdir C:\QtBuild
cd C:\QtBuild
C:\QtSource\qtbase\configure.bat ^
-static ^
-release ^
-prefix C:\Qt\6.12.0_static_mingw162 ^
-opengl desktop ^
-nomake examples ^
-nomake tests
4. Compile and Install 4. Компиляция и установка
Run ninja to start building with all CPU threads, then install:
Запустите ninja для многопоточной компиляции, а затем установите:
ninja
ninja install
ninja install completes, you can safely delete C:\QtBuild and C:\QtSource to free up SSD space.
После завершения ninja install вы можете безопасно удалить папки C:\QtBuild и C:\QtSource для освобождения места на диске.
5. Register Kit in Qt Creator 5. Настройка Kit в Qt Creator
Open Qt Creator and navigate to Edit > Preferences: Откройте Qt Creator и перейдите в Edit > Preferences:
-
Qt Versions: Click Add and select
C:\Qt\6.12.0_static_mingw162\bin\qmake.exeQt Versions: Нажмите Add и укажитеC:\Qt\6.12.0_static_mingw162\bin\qmake.exe -
Compilers: Verify your WinLibs GCC 16.2 (C and C++) compilers are detected under
Auto-detected. Compilers: Убедитесь, что компиляторы WinLibs GCC 16.2 (C и C++) присутствуют в разделеAuto-detected. -
Debuggers: Click Add, set Name to
GDB (WinLibs MinGW 16.2), and point Path to yourgdb.exe(e.g.,C:\mingw64_16.2\bin\gdb.exe). Debuggers: Нажмите Add, назовитеGDB (WinLibs MinGW 16.2)и укажите путь кgdb.exe(например,C:\mingw64_16.2\bin\gdb.exe). -
Kits: Click Add:
- Name:
Qt 6.12.0 Static (MinGW 16.2) - Compiler C/C++: WinLibs GCC 16.2
- Debugger:
GDB (WinLibs MinGW 16.2) - Qt version: The static version registered in step 1
- CMake Generator:
Ninja
- Name:
Qt 6.12.0 Static (MinGW 16.2) - Compiler C/C++: WinLibs GCC 16.2
- Debugger:
GDB (WinLibs MinGW 16.2) - Qt version: Добавленная статическая версия из шага 1
- CMake Generator:
Ninja
- Name:
6. Project Configuration & Testing in Qt Creator 6. Конфигурация проекта и запуск в Qt Creator
You can clone or download the complete ready-to-run demo project directly from GitHub: github.com/ivan-enzhaev/OpenGLTestQt6 Вы можете клонировать или скачать готовый к запуску демонстрационный проект с GitHub: github.com/ivan-enzhaev/OpenGLTestQt6
git clone https://github.com/ivan-enzhaev/OpenGLTestQt6.git
How to Open and Run in Qt Creator: Как открыть и запустить проект в Qt Creator:
-
In Qt Creator, click File > Open File or Project... (or press
Ctrl+O). В Qt Creator нажмите File > Open File or Project... (или нажмитеCtrl+O). -
Navigate to the cloned repository folder and select the
CMakeLists.txtfile. Перейдите в папку склонированного репозитория и выберите файлCMakeLists.txt. -
In the Configure Project screen, select your kit
Qt 6.12.0 Static (MinGW 16.2).
Important: OnlyDebugis checked by default. Make sure to also check theReleasecheckbox so that Qt Creator configures the optimized release build! Then click Configure Project. На экране Configure Project выберите ваш KitQt 6.12.0 Static (MinGW 16.2).
Важно: По умолчанию галочка стоит только наDebug. Обязательно поставьте галочку напротивRelease, чтобы Qt Creator сконфигурировал оптимизированную Release-сборку! После этого нажмите Configure Project. -
Switch the active build configuration to Release (click the monitor icon in the bottom-left corner of Qt Creator or press
Ctrl+T). Переключите активную конфигурацию сборки на Release (нажмите на значок монитора в левом нижнем углу окна Qt Creator или нажмитеCtrl+T). -
Press Ctrl+R to build and launch! The resulting single executable in the release build folder will be stripped down to ~30 MB and runs without needing any external DLLs.
Нажмите Ctrl+R для сборки и запуска! Итоговый одиночный
.exeфайл в папке release-сборки будет автоматически сжат до ~30 МБ и запустится без каких-либо внешних DLL.
CMakeLists.txt Reference: Содержимое CMakeLists.txt:
Here is the clean CMakeLists.txt used in the repository, configured for static linking and automatic stripping:
Минимальный и чистый CMakeLists.txt из репозитория с флагом -static и авто-strip для Release:
cmake_minimum_required(VERSION 3.21)
project(OpenGLTestQt6 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt6 COMPONENTS Widgets OpenGLWidgets REQUIRED)
add_executable(OpenGLTest WIN32
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
)
target_link_libraries(OpenGLTest PRIVATE
Qt6::Widgets
Qt6::OpenGLWidgets
opengl32
)
if(MINGW)
target_link_options(OpenGLTest PRIVATE
-static
$<$<CONFIG:Release>:-s>
)
endif()
Important Note on LGPLv3 & Static Linking Важное примечание о лицензии LGPLv3 и статической линковке
Don't forget about this: If you distribute a statically built Qt.exe under the free LGPLv3 license, you must choose one of two options:
- Make your project open source and share your full source code.
- Keep your source code private, but provide your compiled
.objfiles so users can relink the application with their own Qt library.
.exe под бесплатной лицензией LGPLv3, вам необходимо выбрать один из двух вариантов:
- Сделать проект открытым (Open Source) и опубликовать весь исходный код.
- Оставить исходный код закрытым, но предоставить скомпилированные объектные файлы (
.obj), чтобы пользователи могли перелинковать приложение со своей версией Qt.
Support My Work Поддержать проект
If these tutorials helped you, consider buying me a coffee! Если эти туториалы вам помогли, вы можете поддержать автора.
Sberbank (Russia only) Сбербанк (только для РФ)
Direct transfer via phone number (Russia only) Перевод по номеру телефона (только для РФ)
USDT TRC20
Support via Cryptocurrency Поддержка криптовалютой