Статическая компоновка приложений с QT в Windows

Введение

Статическая компоновка программ с использованием библиотеки QT позволяет упростить их дальнейшее использование, поскольку программы могут быть скопированы на компьютер, где QT не установлена и запущены как обычные программы.

Установка

Скачивание и компиляция исходных кодов библиотеки

По адресу http://qt-project.org/downloads расположены ссылки на скачивание. Скачать можно небольшой online-установщик, который затем установит всё что нужно. Самое главное - это выбрать раздел Source для QT, чтобы скачались исходные файлы библиотеки.

Пример файлового дерева после распаковки:

C:\QT5
       5.2.1\
           mingw48_32\
              bin\
              doc\
              examples\
              imports\
              include\
              lib\
              mkspecs\
                 win32-g++\
                    qmake.conf
              ...
           Src\
              qtbase\
                 bin\
                 mkspecs\
                    win32-g++\
                       qmake.conf
                 ...
              ...
       Licenses\
       temp\
       Tools\
       vcredist\
       components.xml
       ...

Открываем для редактирования два файла qmake.conf (они видны на рисунке) и находим строку с QMAKE_LFLAGS, затем меняем её на:

QMAKE_LFLAGS            += -static

В корневом каталоге c:5 создаём командный файл qt-static.bat слудующего содержания:

set qtdir=c:\qt5\5.2.1
SET PATH=C:\Qt5\Tools\mingw48_32\bin; C:\Qt5\5.2.1\Src\qtbase;%PATH%

cd C:\Qt5\5.2.1\Src\qtbase

configure -static -release -opengl desktop -opensource

mingw32-make
mingw32-make sub-src

Насчёт необходимости последней команды не уверен, но пусть она на всякий случай будет!

Открываем консоль cmd в режиме Администратора.

Запускаем qt-static.bat и ждём некоторое время (может доходить до нескольких часов). К сожалению, процесс компиляции может прерваться из-за ошибки и в этом случае нужно внимательно пересмотреть параметры конфигурации (configure)

Если компиляция завершилась без ошибок, то можно переходить ко второму этапу.

Скачивание и компиляция исходных файлов qt-creator

По адресу http://qt-project.org/downloads#qt-creator можно скачать исходники среды разработки. Поместим их в c:5, а также создадим каталог для размещения построенной статической версии

 C:\QT5
     ...
     qt-creator-opensource-src-3.10\   <- дерево исходных кодов
     qt-creator-build\                 <- место для размещения qt-creator 
     ...
     

Создаём и помещаем в c:5-creator-buld командный файл qt-creator-static.bat следующего содержания:

set QTDIR=C:\Qt5\qt-creator-opensource-src-3.1.0
set PATH=C:\Qt5\qt-creator-opensource-src-3.1.0\bin;C:\Qt5\qt-creator-opensource-src-3.1.0\lib;C:\qt5\tools   \MinGW48_32\bin;%SystemRoot%\System32
set QMAKESPEC=win32-g++

C:\Qt5\5.2.1\mingw48_32\bin\qmake.exe C:\Qt5\qt-creator-opensource-src-3.1.0\qtcreator.pro -spec win32-g++ -r CONFIG+=release

mingw32-make release

Запускаем процесс компиляции, который длится меньше чем предыдущий :-)

Для запуска нового qt-creator лучше использовать ещё один командный файл:

set PATH=%PATH%;C:\Qt5\5.2.1\mingw48_32\bin;C:\Qt5\5.2.1\mingw48_32\lib;C:\qt5\tools\MinGW48_32\bin;

C:\Qt5\qt-creator-build\bin\qtcreator.exe

Настройка проектов

Необходимо в qt-creator создать новый профиль и связать его с файлом

c:\qt5\5.2.1\Src\bin\qmake

Во все создаваемые проекты (.pro) необходимо добавить строку

 CONFIG  = release

После построения исполняемого файла он должен иметь размер в несколько мегабайт или даже больше (я получил 13-15 МБт), но зато он может быть запущен на компьютере, где QT не установлена.

Ссылки: