ru:mingw32
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
ru:mingw32 [2020/05/29 12:47] – kukuruzo | ru:mingw32 [2024/06/16 11:46] (текущий) – kukuruzo | ||
---|---|---|---|
Строка 3: | Строка 3: | ||
===== Необходимый инструментарий ===== | ===== Необходимый инструментарий ===== | ||
- | 1. **[[https://download.qt.io/official_releases/ | + | 1. **[[http://www.cmake.org/|CMake build system]]** |
- | 2. **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/MinGW-i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z/download|MinGW v4.8.2]]** //~45 MB// | + | 2. **[[https://github.com/git-for-windows/git/releases|Git for Windows]]** |
- | 3. **[[http:// | + | 3. **[[http:// |
- | 4. **[[https://github.com/git-for-windows/git/releases|Git for Windows]]** - набор утилит для | + | 4. **[[http://www.gnu.org/software/libidn/|GNU IDN Library (LibIDN)]]** -- скомпилированную версию (v1.28) можно взять [[http://ftp.gnu.org/gnu/libidn/ |
- | 5. **[[http:// | + | 5. **[[http:// |
- | + | ||
- | 6. **[[http:// | + | |
- | + | ||
- | 7. **[[http:// | + | |
8. **[[http:// | 8. **[[http:// | ||
**__Опционально__: | **__Опционально__: | ||
- | * **[[http:// | ||
- | * **[[http:// | ||
* **[[https:// | * **[[https:// | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | |||
- | |||
- | |||
- | |||
- | ===== Подготовка к сборке, | ||
- | |||
- | * Устанавливаем необходимый инструментарий, | ||
- | * Создаём в папке **C: | ||
- | * Распаковываем содержимое архива **[[http:// | ||
- | * Распаковываем содержимое архива **[[http:// | ||
- | * Скачиваем и распаковываем содержимое архива **[[http:// | ||
- | * файлы из папки **bin** копируем в папку **Psi+** (например, | ||
- | * папки **include** и **lib** копируем в папку **C: | ||
- | * < | ||
- | * < | ||
- | < | ||
- | ........ | ||
- | QMAKE_CC = ccache | ||
- | ........ | ||
- | QMAKE_CXX = ccache $${CROSS_COMPILE}g++ | ||
- | </ | ||
- | * В свойствах компьютера (Start → Settings → Control Panel → System Properties → Advanced → Environment Variables) добавляем необходимые пути в системную переменную [[http:// | ||
- | < | ||
- | C:\>path | ||
- | </ | ||
- | |||
- | < | ||
- | PATH=C: | ||
- | </ | ||
- | А также создаём новые системные переменные __(при необходимости заменив пути на свои)__: | ||
- | < | ||
- | GITDIR=C: | ||
- | LIBIDNDIR=C: | ||
- | MINGWDIR=C: | ||
- | OPENSSLDIR=C: | ||
- | QCADIR=C: | ||
- | QCONFDIR=C: | ||
- | QMAKESPEC=win32-g++ | ||
- | QTDIR=C: | ||
- | ZLIBDIR=C: | ||
- | </ | ||
- | |||
- | **__Примечание 1:__** Переменные обновятся только для вновь запущенных процессов, | ||
- | |||
- | **__Примечание 2:__** Если у вас закрыт доступ наружу по порту **9418**, то вы **не сможете** скачать исходный код **Psi** и **Psi+** по протоколу **[[git:// | ||
- | < | ||
- | C: | ||
- | </ | ||
Строка 201: | Строка 144: | ||
Если сборка прошла успешно, | Если сборка прошла успешно, | ||
- | ===== < | ||
- | < | ||
Строка 209: | Строка 150: | ||
+ | ===== Способ сборки Psi+ при помощи кросс-компиляции из OS Linux (рекомендовано) ===== | ||
+ | ==== Настройка и сборка окружения для кросс-компиляции MXE ==== | ||
- | ===== Сборка | + | * Инструкция по скачиванию доступна на официальном сайте проекта [[https:// |
- | * Скачиваем скрипт **[[https://raw.githubusercontent.com/psi-plus/maintenance/ | + | <code bash> |
- | * Включаем необходимый для сборки параметр **MakeClassic** в положение **1** (если он ещё не включен): | + | cd ~ |
- | < | + | mkdir -p github |
- | SET MakeClassic=1 | + | cd ~/github |
- | SET UploadClassic=0 | + | git clone https://github.com/mxe/mxe.git |
- | SET MakeClassicDebug=0 | + | cd mxe |
- | 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: | ||
- | Если скрипт отработал успешно, то в рабочей папке **C:\build** появится архив, содержащий скомпилированный и готовый к работе бинарный файл **psi-plus.exe**. | + | * После скачивания МХЕ в заранее созданном каталоге **~/github**, создаем в корневом каталоге исходных кодов **~/ |
+ | |||
+ | <code bash> | ||
+ | # This variable controls the number of compilation processes | ||
+ | # within one package (" | ||
+ | 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/ | ||
+ | # override MXE_PLUGIN_DIRS += plugins/ | ||
+ | # This variable controls the download mirror for SourceForge, | ||
+ | # when it is used. Enabling the value below means auto. | ||
+ | # | ||
+ | # The three lines below makes `make` build these "local | ||
+ | # packages" | ||
+ | LOCAL_PKG_LIST := qtbase qtmultimedia qtimageformats qttools qtwebkit qtwinextras qtkeychain \ | ||
+ | qttranslations hunspell libotr tidy-html5 minizip \ | ||
+ | gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad opus | ||
+ | .DEFAULT_GOAL | ||
+ | local-pkg-list: | ||
+ | </ | ||
+ | __Особое внимание нужно уделить переменным: | ||
+ | - **MXE_TARGETS** где нужно указать цели сборки МХЕ, подробнее про это можно почитать в каталоге **docs** или кратко в файле **README.md**. //В примере окружение МХЕ будет компилироваться для 2х целей: i686-w64-mingw32.shared - 32х битная среда, динамические бибилиотеки (*.dll) на выходе; | ||
+ | - **MXE_TMP** - каталог где будет происходить сборка окружения MXE, если у вас много оперативной памяти (> | ||
+ | - **LOCAL_PKG_LIST** - список пакетов, | ||
+ | - **JOBS** - количество потоков сборки, | ||
+ | - **override MXE_PLUGIN_DIR** - в примере эта строка закомментирована. Таким образом можно указать версию компилятора или указать какой-то специфический набор опций (обязательно загляните в каталог plugins). //В примере указан gcc9 как компилятор, | ||
+ | | ||
+ | * Закончив с настройкой окружения, | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== Компиляция плагинов Psi+ ===== | ||
- | |||
- | * Скачиваем скрипт **[[https:// | ||
- | * Включаем необходимый для сборки параметр **MakePlugins** в положение **1**: | ||
< | < | ||
- | SET MakeClassic=0 | + | make |
- | 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: | ||
- | Если скрипт | + | Подробнее об опциях сборки пакетов |
+ | **ВНИМАНИЕ** Сборка указанных в примере пакетов для 2х целей будет длиться приблизительно 6 часов, в зависимости от мощности вашего сборочного компьютера. | ||
+ | **СОВЕТ 1** Делайте резервные копии каталога mxe/usr перед каждым обновлением сборочного окружения, | ||
+ | * После окончания сборки окружения МХЕ можно приступать к сборке Psi+ | ||
+ | ==== Сборка Psi+ в окружении MXE ==== | ||
- | ===== Альтернативный способ | + | * Создаем общий каталог сборки |
- | ==== Инструментарий ==== | + | <code bash> |
+ | mkdir -p ~/ | ||
+ | cd ~/github | ||
+ | git clone https:// | ||
+ | </ | ||
- | * **При сборке этим способом все вышеописанные процедуры можно пропустить** | + | * Настраиваем окружение для сборки |
- | * Скачиваем и устанавливаем [[https:// | + | |
- | * Если вы хотите собрать Psi+ при помощи **Qt5**, скачиваем [[http:// | + | |
- | * Для сборки этим способом нам также необходим [[https:// | + | |
- | //**Устанавливать лучше | + | <code bash> |
- | + | unset `env | \ | |
- | Если | + | grep -vi ' |
- | < | + | grep -vi ' |
- | | + | cut -d ' |
- | | + | export PATH=~/github/mxe/ |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
</ | </ | ||
- | + | * Запускаем симейк к исполнению для конкретной цели, например: | |
- | ==== Инструкция по установке Qt5 ==== | + | <code bash> |
- | * Запускаем онлайн-инсталлер **qt-unified-windows-x86-2.0.5-online.exe** | + | cd ~/ |
- | * Нажимаем **Next** | + | i686-w64-mingw32.shared-cmake -DDEV_MODE=ON |
- | * Нажимаем **Skip** (если у вас есть аккаунт Qt можете ввести данные) | + | </ |
- | * Если это первый запуск онлайн-инсталлера, | + | |
- | * Онлайн-инсталлер начнет скачивать информацию по доступным файлам, | + | |
- | * В появившемся списке версий снимаем все галочки и ставим их таким образом: | + | |
- | {{:ru:pic-20170203-141427.png}} | + | |
- | * Нажимаем **Next** и ждем окончания установки | + | |
- | ==== Настройка скрипта сборки Psi+ при помощи cmake и сборка ==== | + | тут вместо |
+ | Эта команда запустит конфигурацию Psi+ для сборки самой Psi+ чатлогом на движке QtWebkit, а также всех плагинов и плагина psimedia | ||
- | * Скачиваем архив [[https:// | + | * Запускаем команду сборки и подготовки собранных бинарных файлов к работе |
- | * Открываем скрипт **make-psiplus-cmake.cmd** текстовым редактором, | + | |
- | * Ищем в скрипте и правим следующие переменные: | + | |
- | **set CPUCOUNT**=// | + | <code bash> |
- | + | i686-w64-mingw32.shared-cmake --build . --target all --target prepare-bin --target prepare-bin-libs --parallel 4 #тоже самое что и JOBS в файле конфигурации МХЕ | |
- | **set BUILDDIR**=// | + | </ |
- | + | ||
- | **set PSIDEPSPREFIX**=// | + | |
- | + | ||
- | **set GITBIN**=// | + | |
- | + | ||
- | **set CMAKEDIR**=// | + | |
- | + | ||
- | **set ISWEBKIT**=// | + | |
- | + | ||
- | **set MINGW32**=// | + | |
- | + | ||
- | Если вы хотите собрать Psi+ при помощи Qt5, нужно изменить также следующие переменные: | + | |
- | + | ||
- | **set QT5DIR**=// | + | |
- | + | ||
- | **set MINGW5DIR**=// | + | |
- | + | ||
- | * Выполнив все подготовительные действия и исправив скрипт, | + | |
- | * Скрипт сам скачает всё необходимое, подготовит исходники к сборке и запустит компиляцию. В процессе он несколько раз будет останавливаться для контроля за процессом сборки. Процесс сборки будет наглядно отображён процентом выполненной работы. Если скрипт отработал правильно, | + | |
- | | + | |
- | * psi-plus.exe | + | |
- | * каталог plugins со всеми плагинами | + | |
- | * файл client_icons.txt | + | |
- | * каталог crets | + | |
- | * каталог iconsets | + | |
- | * каталог sound | + | |
- | * и каталог themes (если включен вебкит) | + | |
- | Файлы переводов (локализации) после сборки | + | В реультате в каталоге **~/ |
+ | Подробнее про флаги для сборки при помощи CMake можно почитать [[https:// | ||
ru/mingw32.1590756462.txt.gz · Последнее изменение: 2020/05/29 12:47 — kukuruzo