Статическая линковка библиотек 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

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

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.