====== Инструкция по сборке 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