Сборка qutIM 0.3 под Windows

в 9:32, , рубрики: c++, open source, Qt Software, qt4, qutIM, метки: , ,

Многим хабражителям известен замечательный открытый и бесплатный многопротокольный (ICQ, Jabber, Mail.Ru, IRC, VKontakte) клиент обмена мгновенными сообщениями qutIM. Если сборка этого клиента из исходников под Linux не вызывает особых вопросов, то сборка под Windows окутана завесой тайны. На оффициальном сайте по этому поводу написано очень мало и поэтому я решил рассказать, как это сделать.

Кому интересно, прошу под кат.

1. Установка Qt4, Qt-Creator, MinGW, CMake и Git

1.1 C сайта qt.nokia.com/downloads скачиваем и устанавливаем последнюю версию Qt.

На момент написания статьи Qt libraries 4.8.1 for Windows (minGW 4.4, 319 MB).
Устанавливаем в C:Qt
get.qt.nokia.com/qt/source/qt-win-opensource-4.8.1-mingw.exe

1.2 Скачиваем и устанавливаем последнюю версию Qt-Creator

На момент написания статьи Qt Creator 2.4.1 for Windows (53 MB).
Устанавливаем в C:Qt
get.qt.nokia.com/qtcreator/qt-creator-win-opensource-2.4.1.exe

Попутно скачиваем MinGW

get.qt.nokia.com/misc/MinGW-gcc440_1.zip
Распакуем архив с MinGW в каталог C:Qtqtcreator-2.4.1

1.3 С сайта www.cmake.org/files/v2.8/ скачиваем и устанавливаем последнюю версию сmake

На момент написания статьи cmake-2.8.7-win32-x86.exe.
Устанавливаем в C:Qt
www.cmake.org/files/v2.8/cmake-2.8.7-win32-x86.exe

1.4 С сайта msysgit.github.com скачиваем и устанавливаем последнюю версию клиента Git под Windows

На момент написания статьи Git-1.7.10-preview20120409.exe
msysgit.googlecode.com/files/Git-1.7.10-preview20120409.exe
В процессе установки выбираем опцию: Use Git Bash only
Так же, т.к. у меня установлен TortoiseSVN, я выбрал опцию: Use (Tortoise) Plink

1.5 Прописываем пути к cmake и прочее

Для этого открываем C:Qt4.8.1binqtvars.bat и после строки

set PATH=%PATH%;%SystemRoot%System32

добавляем свои:

set PATH=%PATH%;C:QtCMake-2.8bin
set PATH=%PATH%;C:Qtqtcreator-2.4.1mingwbin
set PATH=%PATH%;C:Qtqca-2.0.3lib

2. Подготавливаем и собираем дополнительные библиотеки:

Открываем “Qt 4.8.1 Command Prompt” из меню Пуск -> Программы -> Qt by Nokia v4.8.1 (MinGW OpenSource)

1.1 zlib

Исходники берутся с zlib.net
zlib.net/zlib-1.2.6.tar.gz
Распаковываем в C:Qt
Дальше все довольно тривиально, в “Qt 4.8.1 Command Prompt” выполняем:

cd C:Qtzlib-1.2.6
mingw32-make -f win32Makefile.gcc

1.2 OpenSSL

Готовый OpenSSL под Windows берем тут
www.slproweb.com/products/Win32OpenSSL.html
Скачиваем Win32OpenSSL-1_0_1.exe и устанавливаем в C:OpenSSL-Win32
В процессе установки выбираем пункт: The OpenSSL binaries (/bin) directory

Далее в “Qt 4.8.1 Command Prompt” выполняем:

mkdir c:local
mkdir c:localbin
mkdir c:localinclude
mkdir c:locallib
xcopy /I C:OpenSSL-Win32includeopenssl c:localincludeopenssl
copy /Y C:OpenSSL-Win32libMinGW*.* C:locallib
copy /Y C:OpenSSL-Win32liblibeay32.lib C:locallib
copy /Y C:OpenSSL-Win32libssleay32.lib C:locallib

Далее в каталоге C:Qt4.8.1mkspecsfeatures создаем файл winlocal.prf следующего содержания:

WINLOCAL_PREFIX = C:/local

1.3 cyrus-sasl

Ищем в Интернете готовую собранную версию cyrus-sasl под Windows, я нашел на странице IM-клиента Pidgin. (http://developer.pidgin.im/wiki/BuildingWinPidgin)

developer.pidgin.im/static/win32/cyrus-sasl-2.1.22-daa1.zip

Распаковываем в C:Qt

Далее в “Qt 4.8.1 Command Prompt” выполняем:

xcopy /I /E /Y C:Qtcyrus-sasl-2.1.22-daa1bin c:localbin
xcopy /I /E /Y C:Qtcyrus-sasl-2.1.22-daa1include c:localinclude
xcopy /I /E /Y C:Qtcyrus-sasl-2.1.22-daa1lib c:locallib

1.4 QCA

Исходники берем тут:
delta.affinix.com/download/qca/2.0/qca-2.0.3.tar.bz2
delta.affinix.com/download/qca/2.0/plugins/qca-ossl-2.0.0-beta3.tar.bz2
delta.affinix.com/download/qca/2.0/plugins/qca-cyrus-sasl-2.0.0-beta3.tar.bz2

Распаковываем в C:Qt
Собираем в “Qt 4.8.1 Command Prompt”

Собираем qca-2.0.3:

cd C:Qtqca-2.0.3
configure
make
installwin

Собираем qca-ossl-2.0.0-beta3:

cd C:Qtqca-ossl-2.0.0-beta3
configwin rd
qmake
make
mkdir %QTDIR%pluginscrypto
copy /Y lib*.dll %QTDIR%pluginscrypto

Собираем qca-cyrus-sasl-2.0.0-beta3:

cd C:Qtqca-cyrus-sasl-2.0.0-beta3
configwin rd
qmake
make
copy /Y lib*.dll %QTDIR%pluginscrypto

Если при сборке qca-ossl-2.0.0-beta3 или qca-cyrus-sasl-2.0.0-beta3 возникнет ошибка на невозможность найти libsasl или libqcad или libeay32 и т.п., то необходимо в файлах Makefile.Release и Makefile.Debug изменить названия библиотек в параметре LIBS.

К примеру, для qca-ossl-2.0.0-beta3 в файле Makefile.Release у меня написано:
LIBS = -L«c:Qt4.8.1lib» releaseqca-ossl_resource_res.o -LC:/local/lib -llibeay32 -lssleay32 -lgdi32 -lwsock32 -LC:/Qt/qca-2.0.3/lib -lqca2 -lQtCore4

К примеру, для qca-ossl-2.0.0-beta3 в файле Makefile.Debug у меня написано:
LIBS = -L«c:Qt4.8.1lib» debugqca-ossld_resource_res.o -LC:/local/lib -llibeay32 -lssleay32 -lgdi32 -lwsock32 -LC:/Qt/qca-2.0.3/lib -lqca2 -lQtCored4

К примеру, для qca-cyrus-sasl-2.0.0-beta3 в файле Makefile.Release у меня написано:
LIBS = -L«c:Qt4.8.1lib» releaseqca-cyrus-sasl_resource_res.o -LC:/local/lib -llibsasl -LC:/Qt/qca-2.0.3/lib -lqca2 -lQtCore4

3. Сборка qutIM 0.3

Запускаем Пуск -> Программы -> Git -> Git Bash

Выполняем:

mkdir c:qutim-windows
cd c:qutim-windows
git clone git://github.com/euroelessar/qutim.git
cd qutim
git submodule update --init --recursive

При ошибках на стадии git submodule update –init –recursive запустить команду еще раз.

Далее закрываем “Git Bash” и в “Qt 4.8.1 Command Prompt” выполняем:

cd c:qutim-windows
mkdir qutim-build
mkdir qutim-install
cd qutim-build
cmake ../qutim -DZLIB_INCLUDE_DIR=C:/Qt/zlib-1.2.6 -DZLIB_LIBRARIES=C:/Qt/zlib-1.2.6/libz.a -DZLIB_LIBRARY=C:/Qt/zlib-1.2.6/libz.a -DQCA2_LIBRARIES=C:/Qt/qca-2.0.3/lib/libqca2.a -DQCA2_INCLUDE_DIR=C:/Qt/qca-2.0.3/include/QtCrypto -DCMAKE_INSTALL_PREFIX=C:/qutim-windows/qutim-install -DQUTIM_SINGLE_PROFILE=1 -DQUTIM_GUI_TYPE=WIN32 -DCMAKE_BUILD_TYPE=Release -G"MinGW Makefiles"

Если по окончании будет написано

-- Configuring done
-- Generating done
-- Build files have been written to: C:/qutim-windows/qutim-build

, то значит cmake отработал нормально.

Внимательно смотрим на вывод cmake'а и отключаем не нужные плагины при помощи -DPLUGIN_NAME=0

Далее запускаем сборку:

make

Начнется процесс сборки, пример:

C:qutim-windowsqutim-build>make
[  0%] Generating modulemanager.moc
[  0%] Generating moc_abstractcontact.cxx
...
[ 64%] Building CXX object protocols/jabber/CMakeFiles/jabber.dir/src/protocol/a
ccount/jaccount.cpp.obj
...

После успешной сборки подготавливаем рабочий дистрибутив, для этого выполняем:

make install

После этого в каталоге C:qutim-windowsqutim-install нас ждет готовый qutIM 0.3

The end.

Инструкцию составил Михаил Григорьев (sleuthhound@gmail.com, icq: 161867489, www.im-history.ru)

P.S. На самом деле в qutim-install нас ждет не совсем до конца готовый qutIM 0.3, там будет отсутствовать масса необходимых библиотек, например: libgcc_s_dw2-1.dll, mingwm10.dll, QtCore4.dll, QtGui4.dll, QtNetwork4.dll, QtScript4.dll и т.д. Вдобавок к этому если сравнивать qutIM 0.3 из офф. инсталлятора, то его состав сильно отличается от собранного нами. Выводы делайте сами.

Автор: CHERTS

Поделиться

* - обязательные к заполнению поля