Статическая линковка библиотек Qt 5.x (MinGW) под Windows

В данной статье я опишу как сделать отдельный комплект со статической линковкой библиотек Qt5. Если другими словами, мы сможем собирать проект в один исполняемый файл без Qt *.dll.

Подготовка


Нам понадобится непосредственно сам Qt, с официального сайта Qt 5.x.x for Windows 32-bit (MinGW).
Во время установки поставьте галочку на «Source Components», т.к. исходники будут нам необходимы для сборки.
В своем примере я буду использовать Qt 5.5.0 for Windows 32-bit (MinGW 4.9.2).

Начнем


Сборка комплекта
  • Создаем резервную копию qmake.conf, он находится в «Qt5.5.0\5.5\mingw492_32\mkspecs\win32-g++»
  • Делаем изменения в qmake.conf
    QMAKE_LFLAGS += -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
    DEFINES += QT_STATIC_BUILD
    
  • Создаем резервную копию исходников Qt, они находятся в «Qt5.5.0\5.5\Src»
  • Теперь запускаем терминал Qt — Qt 5.5 for Desktop (MinGW 4.9.2 32 bit), он находится
    в «Все программы -> Qt5.5.0 -> 5.5 -> MinGW 4.9.2 (32-bit)» или же полным путем "%appdata%\Microsoft\Windows\Start Menu\Programs\Qt 5.5.0\5.5\MinGW 4.9.2 (32-bit)"
  • Переходим в директорию с исходниками Qt, вводим команду
    cd X:\Qt\Qt5.5.0\5.5\Src\
  • Конфигурируем этап установки, вводя команду, где путь после -prefix, местоположение комплекта сборки
    configure -static -platform win32-g++ -prefix "X:\Qt\Qt5.5.0_Static" -release -opensource -confirm-license -nomake examples -nomake tests -nomake tools -opengl desktop -no-angle -qt-sql-sqlite -make libs -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype
    
  • По завершению конфигурирования, начинаем компиляцию исходников Qt, командой
    mingw32-make
    

    После компиляции, будет несколько ошибок, не обращаем на них внимание, они никак не скажутся на нашей сборке.
  • Копируем файлы в указанный нами каталог на этапе конфигурирования, командой
    mingw32-make install
    

    После копирования, так же будет несколько ошибок, не обращаем на них внимание.
  • Теперь восстанавливаем резервные копии исходников Qt и qmake.conf


Добавляем статичный комплект в Qt Creator
  • Запускаем Qt Creator
  • Открываем «Инструменты -> Параметры..»
  • Далее переходим «Сборка и запуск -> Qt Versions»
  • Жмем добавить и выбираем qmake.exe, точнее «X:\Qt\Qt5.5.0_Static\bin\qmake.exe»
  • Переходим во вкладку «Комплекты»
  • Жмем добавить
  • Пишем название нашего комплекта «Qt 5.5.0 Static MinGW 32», в профиле Qt указываем наш статичный профиль, который добавили в Qt Versions, так же указываем версию нашего компилятора и отладчика(MinGW)
  • Все, мы добавили статичный комплект в Qt Creator


Примечание: в статический комплект не будут включены библиотеки gcc, что бы они так же собирались в исполняемый файл, надо прописать в .pro/.pri
QMAKE_LFLAGS_RELEASE += -static -static-libgcc

Руководствовался информацией с англ. инструкции wiki.qt.io/Building_a_static_Qt_for_Windows_using_MinGW

Спасибо за внимание!
Метки:
Qt, static, статическая линковка