29 January 2012

Qt — статическая линковка библиотеки под Windows

Qt
Всем доброго времени суток, решил написать эту статью специально для тех кто хочет или еще захочет чтобы его программка написанная c помощью Qt под Windows работала даже там где о Qt и не слышали, на Хабре есть статья где данная проблема решается сопровождением нашего .exe библиотечками от skazkin. Сам очень долго искал решение этого вопроса, но практически везде об этом говорили говорили, но ничего действенного так и не получалось. В итоге собирая и анализируя все что приходило мне из разных источников, я наконец-то сделал это и если кому ещё интересно всех прошу под кат

Немного о себе. Ось моя Windows 7 (хотя был XP все тоже), библиотеки Qt 4.7.4 (если у Вас +- пару версий это нормально), Qtcreator 2.3.1 + компилятор MinGw. Сначала ставил Qt Creator, который с официального сайта можно скачать уже с компилятором MinGW (и не только его, а и все остальное), далее библиотеки.
Приступаем к самому интересному, допустим что всё уже установлено или поставилось:
1. Находим директорию куда мы установили нашу библиотеку, что то вроде C:\Qt\4.*.*\, а точнее в C:\Qt\4.*.*\mkspecs\win32-g++ (кстати никогда не используйте кириллицу в наименовании пути к любым файлам Qt, просто не делайте это) и находим там config-file qmake.conf , открываем блокнотиком и добавляем строку
QMAKE_LFLAGS += -static, я её поставил к остальным флажкам.

2. Теперь создаем .bat файл, причем неважно где с примерно следующим содержанием. Где первые две строки будут:
SET QTDIR=C:\Qt\4.7.4
SET PATH=C:\Qt\qtcreator-2.3.1\mingw\bin; C:\Qt\4.7.4\bin;%PATH%

Важно как понимаете изменить директории под Ваши собственные, если конечно они не совпадают. Далее:
configure -opensource -release ^
-nomake examples -nomake demos -nomake tools ^
-nomake translations -nomake docs ^
-no-exceptions -no-stl -no-rtti ^
-no-qt3support -no-scripttools -no-openssl -no-opengl ^
-no-dsp -no-webkit -no-phonon ^
-no-style-motif -no-style-cde -no-style-cleanlooks ^
-no-style-plastique ^
-no-script -no-scripttools -no-declarative ^
-static -platform win32-g++

mingw32-make

Внимание выше перечислены библиотеки которые будут исключены из статической сборки, так что если Вам как и мне будет необходима например поддержка Qt3, то удалите -no-qt3support, и так все что Вам нужно, или добавте то что не нужно, но будьте аккуратны.

3. Всё. Сохраняем и запускаем наш .bat и идем пить кофе, библиотеки собираются теперь без нас.

После всего проделанного наши проекты будут собираться в режиме release полностью статично и можно скорее кодить, скидывать на флешку и нести показать все это нашему другу!

Отдельное спасибо за наставления и поддержку michurin
И не судите строго, надеюсь это кому-нибудь поможет, ведь сам искал это ну очень очень долго…
Tags:Qtstaticстатическая линковка
Hubs: Qt
+27
53.5k 193
Comments 45