Господа, столкнувшись примерно с таким же гемороем, решил собрать Qt статически.
configure.exe -debug-and-release -static -plugin-sql-mysql -qt-zlib -no-gif -qt-libpng -no-libmng -qt-libjpeg -no-qt3support
Предварительно, сделал маленькие изменения в файле mkspec\win32-msvc2005\qmake.conf:
у QMAKE_CFLAGS_RELEASE поставил -MT вместо, если не ошибаюсь, -MD
у QMAKE_CFLAGS_DEBUG поставил соответственно -MTd
К проекатм стал подключать плагины статически с помощью
Q_IMPORT_PLUGIN(QMYSQLDriverPlugin)
Более того, при линковке использую статическую библиотеку MySql mysqlclient.lib.
Фрагмент файла *.pro:
CONFIG(debug, debug|release) {
RCC_DIR = tmp/debug/rcc
UI_DIR = tmp/debug/ui
MOC_DIR = tmp/debug/moc
OBJECTS_DIR = tmp/debug/obj
DESTDIR = tmp/debug
win32 {
LIBS += $(QTDIR)\plugins\sqldrivers\qsqlmysqld.lib c:\projects\mysql\lib\debug\mysqlclient.lib
}
}
CONFIG(release, debug|release) {
RCC_DIR = tmp/release/rcc
UI_DIR = tmp/release/ui
MOC_DIR = tmp/release/moc
OBJECTS_DIR = tmp/release/obj
DESTDIR = tmp/release
win32 {
LIBS += $(QTDIR)\plugins\sqldrivers\qsqlmysql.lib c:\projects\mysql\lib\opt\mysqlclient.lib
}
}
При компиляции в release exe-шник получается размером примерно 8Mb. При упаковке pec2 (
http://www.bitsum.com/pec2.asp) размер сокращается до 2Mb. Кстати, в release я выставляю Postbuild Event команду:
pec2 $(TargetDir)/$(TargetFileName) /Q /Nb
чтобы при сборке автоматически делалась компрессия exe-шника.
Если убрать из линковки манифест, то полученный exe-файл не требует вообще никаких дополнительных файлов.
Для меня это очень удобно, может, и вам понравится.