четверг, 21 октября 2010 г.

Qt Designer Tutorial

Qt 4.4.3, MinGW, Qt Creator и статическая линковка

Так вот. Линковка по умолчанию занимает 15гиг на винте и 5+ часов. А все почему? А потому, что там примеры и туториалы разные линкуются тоже. Понял я это на утро второго дня. Вообще в линковку через батнички и все такое я втыкал по ходу дела. Отвык уже от командной строки. Свой выбор я сделал еще в 1998 году и привык жмакать на всякие кнопочки на разных формочках. Вобщем, в конце концов я все-таки нашел и немного грубовато заставил линковать только Src папку и вспомогательные тулзы. Как - об этом ниже. Результат - линковка занимает меньше 2х часов на моей машинке.
Значит так. Путем экспериментов у меня получились следующие файлы:
mmake.bat:
call bin\qtvars.bat
pause
configure -static -release -no-exceptions -no-qt3support -qt-gif -qt-libpng -qt-libjpeg -no-phonon -no-webkit -no-phonon-backend -no-assistant-webkit -platform win32-g++
pause
make src
Лежать он должен в папке %QTDIR%. В моем случае я сделал отдельную папку для сборки “static release” - C:\Programming\Qt\4.4.3-1\
Файл qtvars.bat:
echo Setting up a Qt environment...
 
set QTDIR=C:\Programming\Qt\4.4.3-1
echo -- QTDIR set to C:\Programming\Qt\4.4.3-1
set PATH=C:\Programming\Qt\4.4.3-1\bin;%PATH%
echo -- Added C:\Programming\Qt\4.4.3-1\bin to PATH
set MINGWDIR=C:\Programming\MinGW
echo -- MINGWDIR set to C:\Programming\MinGW
set PATH=C:\Programming\MinGW\bin;%PATH%
echo -- Added C:\Programming\MinGW\bin to PATH
set QMAKESPEC=win32-g++
echo -- QMAKESPEC set to "win32-g++"
Файл должен находиться в папке %QTDIR%\bin\.
Далее надо поправить строчку в файле qmake.conf:
QMAKE_LFLAGS_DLL        = -static
Файл лежит в папке %QTDIR%\mkspecs\win32-g++\. Напоминаю, настройки для MinGW, для Студии будет в другом месте и другие строчки. Я настраивал, сохранил кучу текста/подсказок. Возможно со временем напишу инструкцию по линковке и подключению в Visual Studio, но позже. Мне Qt Creator понравился, для моих нужд - самое оно!
И, наконец, шаманим projects.pro файл:
#process the projects
for(PROJECT, $$list($$lower($$unique(QT_BUILD_PARTS)))) {
    isEqual(PROJECT, tools) {
       !cross_compile:SUBDIRS += tools
       else:SUBDIRS += tools/qtestlib
    } else:isEqual(PROJECT, examples) {
#       SUBDIRS += examples
    } else:isEqual(PROJECT, demos) {
#       SUBDIRS += demos
    } else:isEqual(PROJECT, libs) {
       include(src/src.pro)
    } else:isEqual(PROJECT, docs) {
       contains(QT_BUILD_PARTS, tools):include(doc/doc.pri)
    } else:isEqual(PROJECT, translations) {
       contains(QT_BUILD_PARTS, tools):include(translations/translations.pri)
    } else:isEqual(PROJECT, qmake) {
#      SUBDIRS += qmake
    } else {
       message(Unknown PROJECT: $$PROJECT)
    }
}
Файл лежит в %QTDIR%. По сути, я просто закомментировал добавление в CONFIG папки с демками и примерами. У команды config есть ключ -fast, он тоже собирает только сорцы, без лишних вещей, но, по-моему, он еще не собирает папку tools и еще что-то.
Ну вот с настройками и все собственно. Запускаем cmd, в нем >mmake.bat и ждем пока все сконфигурируется и слинкуется.
Коротко про конфигурирование. Фонон нельзя собирать в статике, Веб-Кит тоже. Лицензия не позволяет, однако. Мне и не надо, собирать с ними статику не пробовал. Эта сборка для release. Пишу и дебажу в shared сборке, она у меня лежит в отдельной папке (4.4.3 для shared debug и 4.4.3-1 для static release). Есть проблема с загрузкой jpeg файлов. Посоветовали добавить Q_IMPORT_PLUGIN( qjpeg ) в программу и QTPLUGIN += qjpeg в файл проекта. Будем посмотреть.
Со сборкой вроде все. Буду редактировать, если что вспомню. Вообще как само-цель - сделать из блога мини-справку, возможно не так уж и мини, по Qt. Буду своими словами объяснять, что понял из книг и работы с библиотекой.

Взято: http://www.learnqt.com/category/how-to-learn-qt/qt-install/