суббота, 30 октября 2010 г.

Qt + CodeBlocks

Взято http://jenyay.net/Programming/Codeblocks

По пунктам, что надо сделать для успешной компиляции и отладки.

Компиляция

1. Установить Qt и CodeBlocks :)
2. Скомпилировать вручную Qt. Для этого надо:
- Запустить configure.exe. По умолчанию будет отключена поддержка gif. Чтобы ее включить, надо компилировать с параметром -qt-gif
- Скомпилировать отладочные модули. В папке c:\Qt\4.1.3\src\ запустить make. После долгой компиляции получим отладочные и релизные модули в {QTDir}\lib. Релизные уже есть сразу без компиляции после установки Qt.
3. Прописать переменные окружения
- В PATH добавить C:\Qt\4.1.3\bin и C:\Program Files\CodeBlocks\bin
- Создать переменную QTDIR = C:\Qt\4.1.3 4. Перед компиляцией из CodeBlocks не забыть создать проект Qt с помощью qmake. Для этого надо запустить:
- qmake -project -o projectname.pro
- qmake
5. Вручную исправить полученный проект .pro, например, добавить модули, удалить из проекта лишние файлы.
6. После изменения проекта не забыть запустить qmake, чтобы тот создал makefile, по которому будет компилировать CodeBlocks.
7. Создать проект в CodeBlocks (если его еще нет), куда поместить все файлы исходника
8. Настроить CodeBlocks.
- В настройках Settings->Compiler->Вкладка Other->Build method установить на "Work with Makefiles"
- В свойстве проекта на вкладке Project поставить галку "This is custom Makefile"

Отладка

Дальше идет описание настройки CodeBlocks. Все настройки находятся в свойствах проекта.
1. Для отладки в Makefile записать "Makefile.debug" вместо "Makefile"
2. На вкладке Targets изменить путь к скомпилированному exe-шнику на тот, который реально получается (папка Debug)

четверг, 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/