Это старая версия документа!
Содержание
Инструкция по сборке Psi+ в ОС MS Windows (MinGW)
Необходимый инструментарий
1. Qt libraries 4.8.7 for Windows (minGW v4.8.2) или скачать с основной страницы загрузок ~330 MB
2. MinGW v4.8.2 ~45 MB
3. CMake build system (win32) – версию 3.7.2 можно взять здесь ~14 MB
4. Git for Windows - набор утилит для работы с Git ~33 MB
5. OpenSSL – архив с исходным кодом пакета программ для поддержки шифрования и криптографии (версия > 1.0.0) ~4 MB
6. GNU IDN Library (LibIDN) – скомпилированную версию (v1.28) можно взять здесь или здесь ~0.5 MB
7. Zlib for Windows (скомпилированную версию можно взять здесь) (v1.2.8) ~0.05 MB
8. GnuPG (Package for Windows) - свежий win32-инсталлятор можно взять здесь
Опционально:
- TortoiseGit - надстройка для проводника MS Windows ~20 MB
- Aspell Libs for MinGW - библиотеки для обеспечения работы функционала проверки орфографии, необходимые для сборки файлы можно взять здесь ~0.5 MB
- Hunspell for MinGW - библиотека проверки орфографии
Python – только версии 2.x.x (x86) ~15 MBccache version 3.1 – утилита для ускорения процесса компиляции ~0.2 MBПримечание: для нормальной работы ccache необходимо прописать переменную CCACHE_DIR в переменных окружения.
Подготовка к сборке, настройка переменных окружения и необходимых библиотек
- Устанавливаем необходимый инструментарий, указанный выше. Git рекомендуется устанавливать в корень диска, например, в C:\Git
- Создаём в папке C:\MinGW\bin новый файл make.exe путём копирования и переименования из файла mingw32-make.exe (ВРЕМЕННЫЙ КОСТЫЛЬ)
- Распаковываем содержимое архива zlib-1.2.8-win32.7z в папку C:\Qt\zlib
- Распаковываем содержимое архива libidn-1.28-win32.zip в папку C:\Qt\LibIDN
- Скачиваем и распаковываем содержимое архива otrplugin-deps-mingw-win32.7z следующим образом:
- файлы из папки bin копируем в папку Psi+ (например, C:\Program Files (x86)\Psi+)
- папки include и lib копируем в папку C:\MinGW\i686-w64-mingw32
Распаковываем утилиту ccache.exe и библиотеку zlib1.dll из архива ccache-3.1-win32.7z в папку C:\MinGW\binРедактируем строки QMAKE_CC и QMAKE_CXX в файле C:\Qt\4.8.7\mkspecs\win32-g++\qmake.conf (дописываем ccache в следующих строках)
<code>
……..
QMAKE_CC = ccache $${CROSS_COMPILE}gcc
……..
QMAKE_CXX = ccache $${CROSS_COMPILE}g++
</code>
- В свойствах компьютера (Start → Settings → Control Panel → System Properties → Advanced → Environment Variables) добавляем необходимые пути в системную переменную PATH (при необходимости пути следует заменить на свои):
C:\>path
PATH=C:\MinGW\bin;C:\Qt\QConf;C:\cmake\bin;C:\Program Files (x86)\GNU\GnuPG\pub
А также создаём новые системные переменные (при необходимости заменив пути на свои):
GITDIR=C:\Git LIBIDNDIR=C:\Qt\LibIDN MINGWDIR=C:\MinGW OPENSSLDIR=C:\OpenSSL QCADIR=C:\Qt\QCA QCONFDIR=C:\Qt\QConf QMAKESPEC=win32-g++ QTDIR=C:\Qt\4.8.7 ZLIBDIR=C:\Qt\zlib
Примечание 1: Переменные обновятся только для вновь запущенных процессов, т.е. требуется перезапустить cmd с правами администратора (в крайнем случае - перезагрузить систему).
Примечание 2: Если у вас закрыт доступ наружу по порту 9418, то вы не сможете скачать исходный код Psi и Psi+ по протоколу git://. В этом случае рекомендуется в глобальном конфиге Git добавить следующий параметр:
C:\Git\bin\git config --global url."https://".insteadOf git://
Компиляция OpenSSL Toolkit v1.x.x
Важно! Данный алгоритм справедлив для версий OpenSSL выше v1.x.x.
- Создаём рабочую папку C:\build\openssl
- Распаковываем архив с исходниками OpenSSL v1.x.x (из Пункта №5 необходимого инструментария) в папку C:\build\openssl
- Запускаем от имени Администратора Git Bash (идёт в комплекте с Git) в папке C:\build\openssl и последовательно выполняем следующие команды. Сначала конфигурируем проект:
MAKE=mingw32-make PERL=perl.exe ./config --prefix=/c/OpenSSL shared
По завершении конфигурации выполняем команду:
mingw32-make mingw32-make install
В результате компиляции и инсталляции пакета OpenSSL Toolkit v1.x.x получаем скомпилированные библиотеки libeay32.dll и ssleay32.dll в папке C:\OpenSSL\bin, а также заголовочные файлы в папке C:\OpenSSL\include\openssl и служебные библиотеки для линковки в папке C:\OpenSSL\lib.
Теперь пакет OpenSSL Toolkit v1.x.x готов для линковки и сборки Psi+. Временную папку сборки C:\build\openssl можно удалить.
Компиляция Qt Cryptographic Architecture (QCA)
- Запускаем от имени Администратора CMD в рабочей папке C:\build
- Скачиваем исходный код QCA из официального git-репозитория:
C:\Git\bin\git clone git://anongit.kde.org/qca.git
Видим процесс скачивания:
$ git clone git://anongit.kde.org/qca.git Cloning into 'qca'... remote: Counting objects: 14036, done. remote: Compressing objects: 100% (5391/5391), done. remote: Total 14036 (delta 8820), reused 13132 (delta 8167) Receiving objects: 100% (14036/14036), 18.19 MiB | 5.00 MiB/s, done. Resolving deltas: 100% (8820/8820), done. Checking connectivity... done. Checking out files: 100% (467/467), done.
- Переходим в папку C:\build\qca и конфигурируем проект перед сборкой:
cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="C:/Qt/QCA" -DCMAKE_BUILD_TYPE=Release -DBUILD_PLUGINS=ossl;gnupg
Где «C:/Qt/QCA» - путь по которому будет установлена библиотека QCA (у вас может быть другой)
Видим следующее:
C:\build\qca>cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="C:/Qt/QCA" -DCMAKE_ BUILD_TYPE=Release -DBUILD_PLUGINS=ossl;gnupg -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) -- Checking for certstore.. -- Using built in certstore. -- certstore path: C:/build/qca/certs/rootcerts.pem -- mlock(2) does not take a void * CMake Warning at plugins/qca-ossl/CMakeLists.txt:18 (message): qca-ossl will be compiled without MD2 digest algorithm support Plugins: qca-botan off qca-cyrus-sasl off qca-gcrypt off qca-gnupg on qca-logger off qca-nss off qca-ossl on qca-pkcs11 off qca-softstore off QCA prefix is C:/Qt/QCA Plugins will be installed to C:/Qt/QCA/lib/qca/crypto Binary will be installed to C:/Qt/QCA/bin Library will be installed to C:/Qt/QCA/lib Feature file will be installed to C:/Qt/QCA/mkspecs/features Public headers will be installed to C:/Qt/QCA/include Private headers will be installed to C:/Qt/QCA/include Documentation will be installed to C:/Qt/QCA/share/doc/qca/html Man page will be installed to C:/Qt/QCA/share/man Pkg-config file will be installed to C:/Qt/QCA/lib/pkgconfig -- Configuring done -- Generating done -- Build files have been written to: C:/build/qca
- После успешного конфигурирования проекта запускаем сборку командой:
mingw32-make
Видим процесс компиляции:
................................ [ 95%] Generating ssltest.moc Scanning dependencies of target ssltest [ 95%] Building CXX object examples/ssltest/CMakeFiles/ssltest.dir/ssltest.cpp.o bj Linking CXX executable ..\..\bin\ssltest.exe [ 95%] Built target ssltest [ 95%] Generating sslservtest.moc Scanning dependencies of target sslservtest [ 96%] Building CXX object examples/sslservtest/CMakeFiles/sslservtest.dir/sslse rvtest.cpp.obj Linking CXX executable ..\..\bin\sslservtest.exe [ 96%] Built target sslservtest [ 97%] Generating tlssocket.moc Scanning dependencies of target tlssocket [ 98%] Building CXX object examples/tlssocket/CMakeFiles/tlssocket.dir/tlssocket .cpp.obj [ 98%] Building CXX object examples/tlssocket/CMakeFiles/tlssocket.dir/main.cpp. obj Linking CXX executable ..\..\bin\tlssocket.exe [ 98%] Built target tlssocket Scanning dependencies of target mozcerts [ 99%] Building CXX object tools/mozcerts/CMakeFiles/mozcerts.dir/main.cpp.obj Linking CXX executable ..\..\bin\mozcerts.exe [ 99%] Built target mozcerts [100%] Generating main.moc Scanning dependencies of target qcatool [100%] Building CXX object tools/qcatool/CMakeFiles/qcatool.dir/main.cpp.obj Linking CXX executable ..\..\bin\qcatool.exe [100%] Built target qcatool
- Теперь запускаем установку компонентов QCA в заданную при конфигурировании папку:
mingw32-make install
Видим процесс установки:
................................ [ 95%] Built target ssltest [ 96%] Built target sslservtest [ 98%] Built target tlssocket [ 99%] Built target mozcerts [100%] Built target qcatool Install the project... -- Install configuration: "Release" -- Installing: C:/Qt/QCA/certs/rootcerts.pem -- Installing: C:/Qt/QCA/include/QtCrypto/qca.h -- Installing: C:/Qt/QCA/include/QtCrypto/qcaprovider.h -- Installing: C:/Qt/QCA/include/QtCrypto/QtCrypto -- Installing: C:/Qt/QCA/include/QtCrypto/qca_export.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_support.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_tools.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_core.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_textfilter.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_basic.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_publickey.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_cert.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_keystore.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_securelayer.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_securemessage.h -- Installing: C:/Qt/QCA/include/QtCrypto/qca_version.h -- Installing: C:/Qt/QCA/include/QtCrypto/qpipe.h -- Installing: C:/Qt/QCA/mkspecs/features/crypto.prf -- Installing: C:/Qt/QCA/share/man/man1/qcatool.1 -- Installing: C:/Qt/QCA/lib/libqca.dll.a -- Installing: C:/Qt/QCA/bin/libqca.dll -- Installing: C:/Qt/QCA/lib/qca/crypto/libqca-gnupg.dll -- Installing: C:/Qt/QCA/lib/qca/crypto/libqca-ossl.dll -- Installing: C:/Qt/QCA/bin/mozcerts.exe -- Installing: C:/Qt/QCA/bin/qcatool.exe
* Копируем из рабочей папки C:\build\qca файл crypto.prf в папку C:\Qt\4.8.5\mkspecs\features
Теперь комплект QCA готов для конфигурирования и сборки проекта Psi+.
Если по каким-либо причинам не получается самостоятельно скомпилировать QCA, то можно воспользоваться уже готовой версией, распаковав содержимое архива в рабочую папку C:\Qt\QCA.
Компиляция zlib
- Скачиваем исходный код zlib-1.2.8 отсюда
- Распаковываем содержимое архива zlib-1.2.8.tar.gz во временную рабочую папку C:\build\zlib
- Запускаем от имени Администратора Git Bash в папке C:\build\zlib
- Выполняем команду:
mingw32-make -f win32/Makefile.gcc
Видим процесс компиляции:
$ mingw32-make -f win32/Makefile.gcc gcc -O3 -Wall -c -o adler32.o adler32.c gcc -O3 -Wall -c -o compress.o compress.c gcc -O3 -Wall -c -o crc32.o crc32.c gcc -O3 -Wall -c -o deflate.o deflate.c gcc -O3 -Wall -c -o gzclose.o gzclose.c gcc -O3 -Wall -c -o gzlib.o gzlib.c gcc -O3 -Wall -c -o gzread.o gzread.c gcc -O3 -Wall -c -o gzwrite.o gzwrite.c gcc -O3 -Wall -c -o infback.o infback.c gcc -O3 -Wall -c -o inffast.o inffast.c gcc -O3 -Wall -c -o inflate.o inflate.c gcc -O3 -Wall -c -o inftrees.o inftrees.c gcc -O3 -Wall -c -o trees.o trees.c gcc -O3 -Wall -c -o uncompr.o uncompr.c gcc -O3 -Wall -c -o zutil.o zutil.c ar rcs libz.a adler32.o compress.o crc32.o deflate.o gzclose.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o windres --define GCC_WINDRES -o zlibrc.o win32/zlib1.rc gcc -shared -Wl,--out-implib,libz.dll.a \ -o zlib1.dll win32/zlib.def adler32.o compress.o crc32.o deflate.o gzclo se.o gzlib.o gzread.o gzwrite.o infback.o inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o zlibrc.o Creating library file: libz.dll.a strip zlib1.dll gcc -O3 -Wall -I. -c -o example.o test/example.c gcc -o example.exe example.o libz.a strip example.exe gcc -O3 -Wall -I. -c -o minigzip.o test/minigzip.c gcc -o minigzip.exe minigzip.o libz.a strip minigzip.exe gcc -o example_d.exe example.o libz.dll.a strip example_d.exe gcc -o minigzip_d.exe minigzip.o libz.dll.a strip minigzip_d.exe
В результате компиляции наблюдаем в рабочей папке C:\build\zlib готовую к употреблению библиотеку zlib1.dll, а также служебные файлы zconf.h, zlib.h, libz.a и libz.dll.a
Копируем из папки C:\build\zlib следующие файлы:
- zlib1.dll в папку C:\Qt\zlib\bin
- zconf.h и zlib.h в папку C:\Qt\zlib\include
- libz.a и libz.dll.a в папку C:\Qt\zlib\lib
После этого временную рабочую папку C:\build\zlib можно удалить.
Теперь комплект zlib готов для конфигурирования и сборки проекта Psi+.
Компиляция библиотеки Hunspell
- Скачиваем при помощи Git исходники из github репозитория:
C:\Git\bin\git clone https://github.com/zdenop/hunspell-mingw.git
- Переходим в каталог исходников
cd hunspell-mingw
- Создаем каталог для теневой сборки и переходим в него:
mkdir build cd build
- Выполняем конфигурацию исходников:
cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="C:/Hunspell" ..
Где C:/Hunspell - путь куда будет установлена библиотека libhunspell после сборки
- Если конфигурация прошла успешно, запускаем сборку библиотеки и установку:
mingw32-make mingw32-make install
Если сборка прошла успешно, то по адресу C:\Hunspell будет установлена библиотека libhunspell
<del>Компиляция утилиты ccache</del>
Подробную инструкцию по сборке утилиты ccache можно найти здесь.
Сборка Psi+ в автоматическом режиме (рекомендуется)
- Скачиваем скрипт auto-compiler-all-in-one.cmd в новую папку (например, C:\build)
- Включаем необходимый для сборки параметр MakeClassic в положение 1 (если он ещё не включен):
SET MakeClassic=1 SET UploadClassic=0 SET MakeClassicDebug=0 SET UploadClassicDebug=0 SET MakeWebkit=0 SET UploadWebkit=0 SET MakeWebkitDebug=0 SET UploadWebkitDebug=0 SET MakePlugins=0 SET UploadPlugins=0 SET MakePluginsDebug=0 SET UploadPluginsDebug=0
- Запускаем скрипт auto-compiler-all-in-one.cmd в папке C:\build и ждём окончания его выполнения
Если скрипт отработал успешно, то в рабочей папке C:\build появится архив, содержащий скомпилированный и готовый к работе бинарный файл psi-plus.exe.
Компиляция плагинов Psi+
- Скачиваем скрипт auto-compiler-all-in-one.cmd в новую папку (например, C:\build)
- Включаем необходимый для сборки параметр MakePlugins в положение 1:
SET MakeClassic=0 SET UploadClassic=0 SET MakeClassicDebug=0 SET UploadClassicDebug=0 SET MakeWebkit=0 SET UploadWebkit=0 SET MakeWebkitDebug=0 SET UploadWebkitDebug=0 SET MakePlugins=1 SET UploadPlugins=0 SET MakePluginsDebug=0 SET UploadPluginsDebug=0
- Запускаем скрипт auto-compiler-all-in-one.cmd в папке C:\build и ждём окончания его выполнения
Если скрипт отработал успешно, то в рабочей папке C:\build появится архив, содержащий скомпилированные и готовые к работе плагины Psi+.
Альтернативный способ сборки Psi+ под OS Windows (утилитой cmake)
Инструментарий
- При сборке этим способом все вышеописанные процедуры можно пропустить
- Скачиваем и устанавливаем Cmake и Git For Windows
- Если вы хотите собрать Psi+ при помощи Qt5, скачиваем Qt5 Online Installer и устанавливаем версию 5.5 (можно и новее, но возможно придется собирать SDK самому, и в версиях >=5.5 из Qt5 под OS Windows удалили QtWebkit, следовательно собрать вебкит-версию не получится).
Устанавливать лучше всего как можно ближе в корню диска, также не стоит устанавливать эти утилиты в каталоги, в имени которых есть пробелы.
Если у вас уже есть все собранные вами библиотеки необходимые для сборки Psi+, вы можете сами создать каталог SDK разместив в нем каталоги библиотек таким образом:
|-hunspell |---i386 |-----bin |-----doc |-----include |-----lib |-libgcrypt |---i386 |-----... |-libgpg-error |---i386 |-----... |-libidn |---i386 |-----... |-libotr |---i386 |-----... |-libtidy |---i386 |-----... |-openssl |---i386 |-----... |-qca |---i386 |-----... |-zlib |---i386 |-----...
Инструкция по установке Qt5
- Запускаем онлайн-инсталлер qt-unified-windows-x86-2.0.5-online.exe
- Нажимаем Next
- Нажимаем Skip (если у вас есть аккаунт Qt можете ввести данные)
- Если это первый запуск онлайн-инсталлера, то он попросит ввести путь установки, вводим и нажимаем Next
- Онлайн-инсталлер начнет скачивать информацию по доступным файлам, затем нажимаем Next
- В появившемся списке версий снимаем все галочки и ставим их таким образом:
- Нажимаем Next и ждем окончания установки
Настройка скрипта сборки Psi+ при помощи cmake и сборка
- Скачиваем архив make-psiplus-cmake и распаковываем файл make-psiplus-cmake.cmd.
- Ищем в скрипте и правим следующие переменные:
set CPUCOUNT=5 ←тут вместо 5 ваше количество ядер CPU + 1 (в примере 4+1)
set BUILDDIR=C:\build ←тут вместо C:\build путь к каталогу куда будут скачаны исходники и где будет производится сборка Psi+
set PSIDEPSPREFIX=C:\build\psibuild\psisdk ←тут вместо C:\build\psibuild\psisdk путь к каталогу в который был установлен Psi+ SDK
set GITBIN=C:\Git\bin\git.exe ←тут вместо C:\Git\bin\git.exe ваш путь к файлу git.exe
set CMAKEDIR=C:\cmake ←тут вместо C:\cmake ваш путь к каталогу в который был установлен Cmake
set ISWEBKIT=NO ←Если необходимо собрать Psi+ с поддержкой Webkit, заменяем NO на OK
set MINGW32=C:\MinGW ←тут вместо C:\MinGW ваш путь к каталогу в который был установлен MinGW (каталог в котором лежат каталоги bin и lib)
Если вы хотите собрать Psi+ при помощи Qt5, нужно изменить также следующие переменные:
set QT5DIR=C:\Qt\Qt5\5.5\mingw492_32 ←тут вместо C:\Qt\Qt5\5.5\mingw492_32 ваш путь к каталогу в который был установлен Qt-5.5 (каталог в котором лежат каталоги bin и lib)
set MINGW5DIR=C:\Qt\Qt5\Tools\mingw492_32 ←тут вместо C:\Qt\Qt5\Tools\mingw492_32 ваш путь к каталогу в который был установлен MinGW для Qt5 (каталог в котором лежат каталоги bin и lib)
- Выполнив все подготовительные действия и исправив скрипт, запускаем скрипт на выполнение кликнув по нему правой кнопкой мыши и в меню выбрав Запуск от имени администратора
- Скрипт сам скачает всё необходимое, подготовит исходники к сборке и запустит компиляцию. В процессе он несколько раз будет останавливаться для контроля за процессом сборки. Процесс сборки будет наглядно отображён процентом выполненной работы. Если скрипт отработал правильно, то у вас на диске C: появится каталог build, в котором появится каталог psibuild. В каталоге C:\build\psibuild будут лежать следующие каталоги: psi-plus-snapshots, psi-plus-l10n, это каталоги с исходными кодами, необходимыми для сборки Psi+. Также в каталоге C:\build\psibuild будет расположен каталог work, где и будет производится сборка Psi+
- После того как скрипт закончит работу, в каталоге C:\build\psibuild\psi_версия пси+ будут лежать следующие элементы:
- psi-plus.exe
- каталог plugins со всеми плагинами
- файл client_icons.txt
- каталог crets
- каталог iconsets
- каталог sound
- и каталог themes (если включен вебкит)
Файлы переводов (локализации) после сборки будут лежать в каталоге C:\build\psibuild\work\cmake_build\psi\translations