Инструменты пользователя

Инструменты сайта


ru:mingw32

Это старая версия документа!


Инструкция по сборке 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 MB
  • ccache 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
  • Переходим в папку C:\build\qca и конфигурируем проект перед сборкой:
cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX="C:/Qt/QCA" -DCMAKE_BUILD_TYPE=Release -DUSE_RELATIVE_PATHS=ON -DBUILD_PLUGINS=ossl;gnupg

Где «C:/Qt/QCA» - путь по которому будет установлена библиотека QCA (у вас может быть другой)

  • После успешного конфигурирования проекта запускаем сборку командой:
mingw32-make
  • Теперь запускаем установку компонентов QCA в заданную при конфигурировании папку:
mingw32-make install
  • В каталоге C:\Qt\QCA появится полностью собранная библиотека QCA

Теперь комплект QCA готов для конфигурирования и сборки проекта Psi+.

Компиляция 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

В результате компиляции наблюдаем в рабочей папке 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

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 Linux

Настройка и сбока окружения для кросс-компиляции MXE

  • Инструкция по скачиванию доступна на официальном сайте проекта https://mxe.cc/#download
cd ~
mkdir -p github
cd ~/github
git clone https://github.com/mxe/mxe.git
cd mxe
  • После скачивания МХЕ в заранее созданном каталоге ~/github, создаем в корневом каталоге исходных кодов ~/github/mxe файл settings.mk с таким содержимым:
# This variable controls the number of compilation processes
# within one package ("intra-package parallelism").
JOBS := 4
 
# This variable controls where intermediate files are created
# this is necessary when compiling inside a virtualbox shared
# directory. Some commands like strip fail in there with Protocol error
# default is the current directory
#MXE_TMP := /tmp
 
# This variable controls the targets that will build.
MXE_TARGETS := i686-w64-mingw32.shared x86_64-w64-mingw32.shared
 
# This variable controls which plugins are in use.
# See plugins/README.md for further information.
# override MXE_PLUGIN_DIRS += plugins/gcc9
 
# This variable controls the download mirror for SourceForge,
# when it is used. Enabling the value below means auto.
#SOURCEFORGE_MIRROR := downloads.sourceforge.net
 
# The three lines below makes `make` build these "local
# packages" instead of all packages.
LOCAL_PKG_LIST := qtbase qtmultimedia qtimageformats qttools qtwebkit qtwinextras qca qtkeychain \
qttranslations hunspell libidn libotr tidy-html5 minizip libsignal-protocol-c \
gstreamer gst-plugins-base gst-plugins-good opus
.DEFAULT_GOAL  := local-pkg-list
local-pkg-list: $(LOCAL_PKG_LIST)

Особое внимание нужно уделить переменным:

  1. MXE_TARGETS где нужно указать цели сборки МХЕ, подробнее про это можно почитать в каталоге docs или кратко в файле README.md. В примере окружение МХЕ будет компилироваться для 2х целей: i686-w64-mingw32.shared - 32х битная среда, динамические бибилиотеки (*.dll) на выходе; x86_64-w64-mingw32.shared - 64х битная среда, динамические бибилиотеки (*.dll) на выходе.
  2. LOCAL_PKG_LIST - список пакетов, которые будут компилироваться по-умолчанию. В примере показан минимальный список необходимый для сборки полного комплекта Psi+
  3. JOBS - количество потоков сборки, используется для ускорения сборки на многоядерных системах, значение обычно ставят из соображения количество ядер процессора + 1
  4. override MXE_PLUGIN_DIR - в примере эта строка закомментирована. Таким образом можно указать версию компилятора или указать какой-то специфический набор опций (обязательно загляните в каталог plugins). В примере указан gcc9 как компилятор, а по-умолчанию версия может быть старее или новее.
  • Закончив с настройкой окружения, запускаем его сборку командой:
make

Подробнее об опциях сборки пакетов https://mxe.cc/#usage

ВНИМАНИЕ Сборка указанных в примере пакетов для 2х целей будет длиться приблизительно 6 часов, в зависимости от мощности вашего сборочного компьютера.

  • После окончания сборки окружения МХЕ можно приступать к сборке Psi+

Сборка Psi+ в окружении MXE

  • Создаем общий каталог сборки и скачиваем исходные коды программы Psi+ при помощи утилиты git
mkdir -p ~/github/build
cd ~/github
git clone https://github.com/psi-plus/psi-plus-snapshots.git
  • Настраиваем окружение для сборки
unset `env | \
grep -vi '^EDITOR=\|^HOME=\|^LANG=\|MXE\|^PATH=' | \
grep -vi 'PKG_CONFIG\|PROXY\|^PS1=\|^TERM=' | \
cut -d '=' -f1 | tr '\n' ' '`
export PATH=~/github/mxe/usr/bin:$PATH #тут лучше прописать полный путь к МХЕ
  • Запускаем симейк к исполнению для конкретной цели, например:
cd ~/github/build
i686-w64-mingw32.shared-cmake -DDEV_MODE=ON -DENABLE_PLUGINS=ON -DBUILD_PSIMEDIA=ON -DCHAT_TYPE=webkit ../psi-plus-snapshots

тут вместо i686-w64-mingw32.shared-cmake нужно указывать конкретный симейк для конкретной цели. Для варианта из примера это может быть также x86_64-w64-mingw32.shared-cmake.

Эта команда запустит конфигурацию Psi+ для сборки самой Psi+ чатлогом на движке QtWebkit, а также всех плагинов и плагина psimedia

  • Запускаем команды сборки и подготовки собранных бинарных файлов к работе
make -j4 \ #тоже самое что и JOBS в файле конфигурации МХЕ
&& make prepare-bin \
&& make prepare-bin-libs

В реультате в каталоге ~/github/build/psi будет собран *.exe файл Psi+ и в каталоге ~/github/build/psi/plugins будут собраны все плагины *.dll, а также в каталог ~/github/build/psi будут скопированы все необходимые для запуска Psi+ библиотеки зависимостей

Подробнее про флаги для сборки при помощи CMake можно почитать тут

Полезные ссылки

ru/mingw32.1590764719.txt.gz · Последнее изменение: 2020/05/29 15:05 — kukuruzo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki