среда, 22 сентября 2010 г.

Сборка Qt без зависимостей (MinGW)

Задача состоит в том, чтобы собрать Qt без зависимостей от сторонних библиотек, т.е. полностью статически. Ключиком -static поставленая задача выполняется не полностью, т.к. Qt собирается с зависимостью от динамической библиотеки MinGW (mingwm10.dll). Эта зависимость может быть убрана путем редактирования qmake.conf.

Все действия проводим до конфигурирования командой configure!
Qt 4.3 и выше

Отредактируйте \mkspecs\win32-g++\qmake.conf: таким образом:

1. Замените

QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

на (add -static)

QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

Qt 4.2 и ниже

Отредактируйте \mkspecs\win32-g++\qmake.conf: таким образом:

1. Замените

QMAKE_CFLAGS_THREAD = -mthreads

на (remove -mthreads)

QMAKE_CFLAGS_THREAD =

2. Замените

QMAKE_LFLAGS = -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

на (remove -mthreads, add -static)

QMAKE_LFLAGS = -static -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

Теперь осталось только запустить configure.exe с необходимыми вам ключами (включая -static), а затем использовать mingw32-make.exe. Все проекты, создаваемые при помощи qmake, уже будут иметь необходимые настройки.