====== Инструкция по сборке Psi (Qt4) ======
===== Linux Gentoo =====
layman -o http://rion-overlay.googlecode.com/files/rion-overlay.xml -f -a rion && echo "app-crypt/qca **
app-crypt/qca-ossl **
app-crypt/qca-gnupg **">/etc/portage/package.keywords && emerge psi-git
__Примечание__: исходники будут скачены из git-репозитория.
===== MS Windows (MinGW) =====
==== Необходимый инструметарий ====
* **[[http://trolltech.com/downloads/opensource/appdev/windows-cpp|Qt for Open Source C++ development on Windows (with the MinGW compiler included)]]**
(инсталлятор также предложит скачать и установить компилятор **MinGW** - __рекомендуется__)
* **[[http://www.slproweb.com/download/Win32OpenSSL-0_9_8g.exe|Win32 OpenSSL 0.9.8g]]**
==== Подготовка к сборке. Настройка переменных окружения и необходимых библиотек ====
* Скачиваем исходный код Psi из SVN по адресу **http://svn.psi-im.org/psi/trunk**
* После установки перечисленных выше продуктов необходимо в свойствах компьютера (Advanced -> Environment Variables) прописать пути (переменная Path) к **C:\Qt\4.4.3\bin** и к **C:\MinGW\bin**, а также переменные окружения QTDIR=C:\Qt\4.4.3 и QMAKESPEC=win32-g++ (опционально)
**__Примечание:__** переменные обновятся только для вновь запущенных процессов, т.е. требуется перезапустить **cmd.exe**.
* Выбираем директорию **C:\OpenSSL\include\openssl** и копируем всю директорию **openssl** в **C:\MinGW\include**. В результате должно получиться так **C:\MinGW\include\openssl**.
* В директории **C:\OpenSSL\lib\MinGW** создаём копии файлов **ssleay32.a** и **libeay32.a** с именами **ssleay32.lib** и **libeay32.lib** соответственно.
* Копируем содержимое директории **C:\OpenSSL\lib\MinGW** (libeay32.a, libeay32.def, ssleay32.a, ssleay32.def) в директорию **C:\MinGW\lib** и переименовываем **ssleay32.a** в **libssleay32.a** и **ssleay32.def** в **libssleay32.def**.
* Создаём файл **winlocal.prf** в директории **C:\Qt\4.4.2\mkspecs\features** со следующим содержимым:
WINLOCAL_PREFIX = C:/OpenSSL
* В директории **psi-svn/iris** переименовываем файлы **conf_win.pri.example** в **conf_win.pri**. В файле **conf_win.pri** дописываем следующую строку:
include(../src/conf_iris.pri)
* В файле **psi-svn/third-party/qca/qca-ossl.pri** переименовываем ключ **-llibeay32** в **-leay32**.
* Для включения поддержки плагинов в файле **psi-svn/src/src.pro** необходимо расскоментировать следующую строку:
было
#CONFIG += psi_plugins
стало
CONFIG += psi_plugins
* В файле **psi-svn/conf_windows.pri** раскомментируем третью строку:
было
#CONFIG += qca-static
стало
CONFIG += qca-static
* Для переключения конфигурации (Release/Debug) в файле **psi-svn/conf_windows.pri** необходимо изменить вторую строку c
CONFIG += release
на
CONFIG += debug
==== Проверка правильной установки и работоспособности Qt на примере сборки тестовой программы ====
* запускаем командную строку **cmd.exe** (Start -> Run -> cmd)
* меняем рабочую директорию на **C:\Qt\4.4.3\examples\tutorials\tutorial\t1**
* в командной строке **cmd.exe** выполняем команду **qmake**, а затем команду **make**
C:\Qt\4.4.3\examples\tutorials\tutorial\t1>qmake
C:\Qt\4.4.3\examples\tutorials\tutorial\t1>make
mingw32-make -f Makefile.Debug all
mingw32-make[1]: Entering directory `C:/Qt/4.4.3/examples/tutorials/tutorial/t1'
g++ -c -g -Wall -frtti -fexceptions -mthreads -DUNICODE -DQT_LARGEFILE_SUPPORT -
DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..
\..\..\include\QtCore" -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtG
ui" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"c:\Qt\4.4.3\include
\ActiveQt" -I"tmp\moc\debug_shared" -I"." -I"..\..\..\..\mkspecs\win32-g++" -o t
mp\obj\debug_shared\main.o main.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -mthreads -Wl -Wl,-subsystem,windows -o debug\t1.exe tmp/obj/debug_shared/mai
n.o -L"c:\Qt\4.4.3\lib" -L"c:\Qt\4.4.3\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtC
ored4
mingw32-make[1]: Leaving directory `C:/Qt/4.4.3/examples/tutorials/tutorial/t1'
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory `C:/Qt/4.4.3/examples/tutorials/tutorial/t1'
g++ -c -O2 -Wall -frtti -fexceptions -mthreads -DUNICODE -DQT_LARGEFILE_SUPPORT
-DQT_DLL -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS
_QMAIN -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtCore" -I"..\..\..
\..\include\QtGui" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"c:\Q
t\4.4.3\include\ActiveQt" -I"tmp\moc\release_shared" -I"." -I"..\..\..\..\mkspec
s\win32-g++" -o tmp\obj\release_shared\main.o main.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -Wl,-subsystem,windows -o release\t1.exe tmp/obj/release
_shared/main.o -L"c:\Qt\4.4.3\lib" -L"c:\Qt\4.4.3\lib" -lmingw32 -lqtmain -lQtG
ui4 -lQtCore4
mingw32-make[1]: Leaving directory `C:/Qt/4.4.3/examples/tutorials/tutorial/t1'
Результат сборки release-версии наблюдаем в директории **C:\Qt\4.4.3\examples\tutorials\tutorial\t1\release\t1.exe**
Это означает, что Qt правильно установлена и работоспособна.
==== Процесс сборки Psi ====
* Заходим в локальную директорию **psi-svn**, где расположены скачанные исходные файлы Psi
* В данной директории выполняем команду **qmake** и **make** (или **make clean** и **make**)
Через некоторое время (10 - 40 минут) ищем результат компиляции в виде **psi.exe** в **psi-svn/src/release**
**__Примечание:__** размер файла **psi.exe** может быть различным (зависит от выбранной конфигурации debug/release):
* для release-конфигурации размер может составлять от 5Mb до 10Mb
* для debug-конфигурации - от 50Mb до 80Mb
==== Компиляция плагинов ====
Рассмотрим компиляцию плагинов на примере:
* Заходим в директорию **src/plugins/generic/urlwatcher**
* Выполняем команду **qmake**
* Выполняем команду **make -f makefile.release**
* скомпилированный плагин **urlwatcherplugin.dll** наблюдаем в **src/plugins/generic/urlwatcher/release**
===== Microsoft Visual Studio 2005 (не рекомендуется) =====
==== Необходимый инструментарий ====
Скачиваем исходный код Psi из SVN по адресу **http://svn.psi-im.org/psi/trunk** и следующие инструменты:
* [[http://ftp.ntua.gr/pub/X11/Qt/qt/source/qt-win-opensource-src-4.3.2.zip|qt-win-opensource-src-4.3.2]]
* [[http://downloads.sourceforge.net/qtwin/acs-4.3.x-patch3.zip|patch allowing Qt to be compiled with Visual Studio compilers]]
* [[http://hotfix.xable.net/download/index.php?dir=English/Visual%20Studio%202005/|hotfix для Visual Studio 2005/Visual Studio 2005 SP1]]
* [[http://www.slproweb.com/download/Win32OpenSSL-0_9_8g.exe|Win32 OpenSSL]]
==== Установка Qt source ====
Скачанный архив **qt-win-opensource-src-4.3.2** распаковываем в директорию **C:\Qt\4.3.2-msvc2005**
==== Установка патча ====
Распаковываем содержимое архива **acs-4.3.x-patch3.zip** в директорию с исходным кодом Qt **C:\Qt\4.3.2-msvc2005**
==== Настройка переменных окружения и необходимых библиотек ====
В **Path** прописываем следующие пути:
* **C:\Qt\4.3.2-msvc2005\bin**
* **C:\Program Files\Microsoft Visual Studio 8\VC\bin**
Добавляем следующие системные переменные:
* **QMAKESPEC=win32-msvc2005**
* **QTDIR=C:\Qt\4.3.2-msvc2005**
Копируем содержимое директории **C:\OpenSSL\lib\VC** в директорию **C:\Program Files\Microsoft Visual Studio 8\VC\lib** и переименовываем следующие файлы:
* **libeay32MD.lib** -> **libeay32.lib**
* **libeay32MDd.lib** -> **libeay32d.lib**
* **ssleay32MD.lib** -> **ssleay32.lib**
* **ssleay32MDd.lib** -> **ssleay32d.lib**
Выбираем директорию **C:\OpenSSL\include\openssl** и копируем всю директорию **openssl** в **C:\Program Files\Microsoft Visual Studio 8\VC\include**
В результате должно получиться так **C:\Program Files\Microsoft Visual Studio 8\VC\include\openssl**
==== Запуск командой строки Visual Studio 2005 Command Prompt ====
Открываем командную строку Visual Studio 2005 Command Prompt:
**Start** -> **Programs** -> **Microsoft Visual Studio 2005** -> **Visual Studio Tools** -> **Visual Studio 2005 Command Prompt**
Для проверки правильности прописанного пути к **nmake.exe** пишем в cmd:
C:\Qt\4.3.2-msvc2005>nmake /?
Microsoft (R) Program Maintenance Utility Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.
Usage: NMAKE @commandfile
NMAKE [options] [/f makefile] [/x stderrfile] [macrodefs] [targets]
Options:
........
==== Применения патча к файлам исходного кода Qt ====
Накладываем патч из архива **acs-4.3.x-patch3.zip**:
C:\Qt\4.3.2-msvc2005>installpatch42.bat
patching file src/corelib/global/qglobal.cpp
patching file src/corelib/global/qglobal.h
patching file src/corelib/kernel/qabstractitemmodel.cpp
patching file src/corelib/kernel/qvariant.h
patching file src/corelib/tools/qshareddata.h
patching file src/corelib/tools/qlist.h
patching file src/corelib/io/qtextstream.h
patching file src/corelib/io/qdir.cpp
patching file src/corelib/io/qsettings.cpp
patching file src/corelib/io/qtextstream.cpp
patching file src/corelib/corelib.pro
patching file src/qbase.pri
patching file src/opengl/opengl.pro
.............
patching file mkspecs/win32-msvc2005/qmake.conf
patching file mkspecs/win32-msvc.net/qplatformdefs.h
patching file qconfigure.bat
patching file examples/threads/waitconditions/waitconditions.pro
Press any key to continue . . .
==== Конфигурирование Qt и сборка qmake ====
Для вывода справки по команде **configure.exe** пишем в **cmd**:
C:\Qt\4.3.2-msvc2005>configure.exe -help
Для начала процесса сборки **qmake** пишем:
C:\Qt\4.3.2-msvc2005>qconfigure.bat msvc2005 -debug-and-release
This is the Qt/Windows Open Source Edition.
You are licensed to use this software under the terms of
the GNU General Public License.
Type '?' to view the GNU General Public License.
Type 'y' to accept this license offer.
Type 'n' to decline this license offer.
Do you accept the terms of the license?
y
Далее:
Going to compile qmake now
Continue? (Y/N):Y
Затем:
Going to generate Makefiles for Qt now
Continue? (Y/N):Y
По окончании сборки **qmake** будет выведено следующее сообщение:
====================================================
You are now ready to build Qt (msvc2005)
If you specified -static or only want to build the
Qt library, type 'nmake sub-src'
otherwise, type 'nmake'
To start over, type 'nmake distclean'
and then re-run qconfigure.bat
====================================================
==== Сборка Qt ====
C:\Qt\4.3.2-msvc2005>nmake
Процесс сборки Qt может занять некоторое время (20-60 минут)
==== Создание проекта psi.vcproj для Visual Studio 2005 ====
Переходим в директорию **psi-svn** с файлами исходного кода Psi и проверяем правильность путей и переменных:
D:\Psi\psi-svn>qmake -v
QMake version 2.01a
Using Qt version 4.3.2 in C:\Qt\4.3.2-msvc2005\lib
D:\Psi\psi-svn>echo %QMAKESPEC%
win32-msvc2005
Открываем файл **D:\Psi\psi-svn\psi.pro** и комментируем следующие строки:
# SUBDIRS += \
# src
Далее выполняем:
D:\Psi\psi-svn>qmake
Затем:
D:\Psi\psi-svn>nmake
Переходим в директорию **psi-svn/src** и запускаем команду для создание проекта **psi** для Visual Studio 2005:
D:\Psi\psi-svn\src>qmake -t vcapp src.pro
После выполнения данной команды в этой же директории видим файл **psi.vcproj**
Открываем файл **psi.vcproj** в Visual Studio 2005
Переключаемся на конфигурацию **Release** и выполняем команду **Build**
==== Примечания ====
- **QCA**: при возникновении проблем с компиляцией qca-файлов необходимо в директории **psi-svn/third-party/qca** сделать **qmake** и затем **nmake**
===== Как пропатчить исходный код Psi под MS Windows? =====
==== Инструменты ====
* [[http://gnuwin32.sourceforge.net/packages/patch.htm|GNU/Patch for Windows]] (apply a diff file to an original)
__Примечание:__ On MS-Windows, the patchfile must be a text file, i.e. CR-LF must be used as line endings. A file with LF may give the error: "Assertion failed, hunk, file patch.c, line 343," unless the option '--binary' is given.
===== Полезные ссылки =====
* http://psi-im.org
* http://www.trolltech.com/qt/
* http://qtnode.net/wiki?title=Qt4_with_Visual_Studio