Многим хабражителям известен замечательный открытый и бесплатный многопротокольный (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