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

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


ru:mingw32

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
ru:mingw32 [2020/05/29 12:48] kukuruzoru:mingw32 [2024/06/16 11:46] (текущий) kukuruzo
Строка 3: Строка 3:
 ===== Необходимый инструментарий ===== ===== Необходимый инструментарий =====
  
-1. **[[https://download.qt.io/official_releases/qt/4.8/4.8.7/qt-opensource-windows-x86-mingw482-4.8.7.exe|Qt libraries 4.8.7 for Windows (minGW v4.8.2)]]** или скачать с основной [[http://qt-project.org/downloadsтраницы загрузок]] //~330 MB//+1. **[[http://www.cmake.org/|CMake build system]]** -- версию 3.7.2 можно взять [[https://cmake.org/files/v3.7/cmake-3.7.2-win32-x86.msi|здесь]] //~14 MB//
  
-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]]** набор утилит для работы с [[http://ru.wikipedia.org/wiki/Git|Git]] //~33 MB//
  
-3. **[[http://www.cmake.org/|CMake build system (win32)]]** -- версию 3.7.2 можно взять [[https://cmake.org/files/v3.7/cmake-3.7.2-win32-x86.msi|здесь]] //~14 MB//+3. **[[http://www.openssl.org/source/|OpenSSL]]** -- архив с исходным кодом пакета программ для поддержки шифрования и криптографии (версия > 1.0.0) //~MB//
  
-4. **[[https://github.com/git-for-windows/git/releases|Git for Windows]]** - набор утилит для работы с [[http://ru.wikipedia.org/wiki/Git|Git]] //~33 MB//+4. **[[http://www.gnu.org/software/libidn/|GNU IDN Library (LibIDN)]]** -- скомпилированную версию (v1.28) можно взять [[http://ftp.gnu.org/gnu/libidn/libidn-1.28-win32.zip|здесь]]
  
-5. **[[http://www.openssl.org/source/|OpenSSL]]** -- архив с исходным кодом пакета программ для поддержки шифрования и криптографии (версия > 1.0.0) //~4 MB// +5. **[[http://www.zlib.net/|Zlib for Windows]]**
- +
-6. **[[http://www.gnu.org/software/libidn/|GNU IDN Library (LibIDN)]]** -- скомпилированную версию (v1.28) можно взять [[http://ftp.gnu.org/gnu/libidn/libidn-1.28-win32.zip|здесь]] или [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/libidn-1.28-win32.zip/download|здесь]] //~0.5 MB// +
- +
-7. **[[http://www.zlib.net/|Zlib for Windows]]** (скомпилированную версию можно взять [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/zlib-1.2.8-win32.7z/download|здесь]]) (v1.2.8) //~0.05 MB//+
  
 8. **[[http://gpg4win.org/|GnuPG (Package for Windows)]]** - свежий win32-инсталлятор можно взять [[http://files.gpg4win.org/gpg4win-2.2.1.exe|здесь]] 8. **[[http://gpg4win.org/|GnuPG (Package for Windows)]]** - свежий win32-инсталлятор можно взять [[http://files.gpg4win.org/gpg4win-2.2.1.exe|здесь]]
  
 **__Опционально__:** **__Опционально__:**
-  * **[[http://download.tortoisegit.org/tgit/|TortoiseGit]]** - надстройка для проводника MS Windows //~20 MB// 
-  * **[[http://aspell.net/|Aspell Libs for MinGW]]** - библиотеки для обеспечения работы функционала проверки орфографии, необходимые для сборки файлы можно взять [[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/lyx-windows-deps-mingw-small.zip/download|здесь]] //~0.5 MB// 
   * **[[https://github.com/zdenop/hunspell-mingw|Hunspell for MinGW]]** - библиотека проверки орфографии   * **[[https://github.com/zdenop/hunspell-mingw|Hunspell for MinGW]]** - библиотека проверки орфографии
-  * <del>**[[http://www.python.org/download/|Python]]** -- только версии 2.x.x (x86) //~15 MB//</del> 
-  * <del>**[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/ccache-3.1-win32.7z/download|ccache version 3.1]]** -- [[http://ru.wikipedia.org/wiki/Ccache|утилита]] для ускорения процесса компиляции //~0.2 MB//</del> 
-      * <del>__**Примечание**__: для нормальной работы **ccache** необходимо прописать переменную **CCACHE_DIR** в переменных окружения.</del> 
  
- 
- 
- 
- 
-===== Подготовка к сборке, настройка переменных окружения и необходимых библиотек ===== 
- 
-  * Устанавливаем необходимый инструментарий, указанный выше. [[https://github.com/msysgit/msysgit/releases|Git]] рекомендуется устанавливать в корень диска, например, в **C:\Git** 
-  * Создаём в папке **C:\MinGW\bin** новый файл **make.exe** путём копирования и переименования из файла **mingw32-make.exe** **(ВРЕМЕННЫЙ КОСТЫЛЬ)** 
-  * Распаковываем содержимое архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/zlib-1.2.8-win32.7z/download|zlib-1.2.8-win32.7z]]** в папку **C:\Qt\zlib** 
-  * Распаковываем содержимое архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/libidn-1.28-win32.zip/download|libidn-1.28-win32.zip]]** в папку **C:\Qt\LibIDN** 
-  * Скачиваем и распаковываем содержимое архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/otrplugin-deps-mingw-win32.7z/download|otrplugin-deps-mingw-win32.7z]]** следующим образом: 
-    * файлы из папки **bin** копируем в папку **Psi+** (например, C:\Program Files (x86)\Psi+) 
-    * папки **include** и **lib** копируем в папку **C:\MinGW\i686-w64-mingw32** 
-  * <del>Распаковываем утилиту **ccache.exe** и библиотеку **zlib1.dll** из архива **[[http://sourceforge.net/projects/psiplus/files/MS-Windows/Dev/ccache-3.1-win32.7z/download|ccache-3.1-win32.7z]]** в папку **C:\MinGW\bin**</del> 
-  * <del>Редактируем строки **QMAKE_CC** и **QMAKE_CXX** в файле **C:\Qt\4.8.7\mkspecs\win32-g++\qmake.conf** (дописываем **//ccache//** в следующих строках)</del> 
-<del><code> 
-........ 
-QMAKE_CC = ccache  $${CROSS_COMPILE}gcc 
-........ 
-QMAKE_CXX = ccache $${CROSS_COMPILE}g++ 
-</code></del> 
-  * В свойствах компьютера (Start → Settings → Control Panel → System Properties → Advanced → Environment Variables) добавляем необходимые пути в системную переменную [[http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D1%81%D1%80%D0%B5%D0%B4%D1%8B_Windows|PATH]] __(при необходимости пути следует заменить на свои)__: 
-<code> 
-C:\>path 
-</code> 
- 
-<code> 
-PATH=C:\MinGW\bin;C:\Qt\QConf;C:\cmake\bin;C:\Program Files (x86)\GNU\GnuPG\pub 
-</code> 
-А также создаём новые системные переменные __(при необходимости заменив пути на свои)__: 
-<code> 
-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 
-</code> 
- 
-**__Примечание 1:__** Переменные обновятся только для вновь запущенных процессов, т.е. требуется перезапустить **cmd** с правами администратора (в крайнем случае - перезагрузить систему). 
- 
-**__Примечание 2:__** Если у вас закрыт доступ наружу по порту **9418**, то вы **не сможете** скачать исходный код **Psi** и **Psi+** по протоколу **[[git://]]**. В этом случае рекомендуется в глобальном конфиге **Git** добавить следующий параметр: 
-<code> 
-C:\Git\bin\git config --global url."https://".insteadOf git:// 
-</code> 
  
  
Строка 201: Строка 144:
 Если сборка прошла успешно, то по адресу C:\Hunspell будет установлена библиотека libhunspell Если сборка прошла успешно, то по адресу C:\Hunspell будет установлена библиотека libhunspell
  
-===== <del>Компиляция утилиты ccache</del> ===== 
  
-<del>Подробную инструкцию по сборке утилиты **ccache** можно найти **[[ru:ccache|здесь]]**.</del> 
  
  
Строка 209: Строка 150:
  
  
 +===== Способ сборки Psi+ при помощи кросс-компиляции из OS Linux (рекомендовано) =====
  
 +==== Настройка и сборка окружения для кросс-компиляции MXE ====
  
-===== Сборка Psi+ в автоматическом режиме (рекомендуется) =====+  * Инструкция по скачиванию доступна на официальном сайте проекта [[https://mxe.cc/#download|https://mxe.cc/#download]]
  
-  * Скачиваем скрипт **[[https://raw.githubusercontent.com/psi-plus/maintenance/master/scripts/win32/auto-compiler-all-in-one.cmd|auto-compiler-all-in-one.cmd]]** в новую папку (например, **C:\build**) +<code bash> 
-  * Включаем необходимый для сборки параметр **MakeClassic** в положение **1** (если он ещё не включен): +cd ~ 
-<code> +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+
 </code> </code>
-  * Запускаем скрипт **auto-compiler-all-in-one.cmd** в папке **C:\build** и ждём окончания его выполнения 
  
-Если скрипт отработал успешното в рабочей папке **C:\build** появится архив, содержащий скомпилированный и готовый к работе бинарный файл **psi-plus.exe**.+  * После скачивания МХЕ в заранее созданном каталоге **~/github**, создаем в корневом каталоге исходных кодов **~/github/mxe** файл **settings.mk** с таким содержимым: 
 +   
 +<code bash> 
 +# 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 qtkeychain \
 +qttranslations hunspell libotr tidy-html5 minizip \
 +gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad opus
 +.DEFAULT_GOAL  := local-pkg-list
 +local-pkg-list: $(LOCAL_PKG_LIST)
 +</code>
 +__Особое внимание нужно уделить переменным:__
 +        - **MXE_TARGETS** где нужно указать цели сборки МХЕ, подробнее про это можно почитать в каталоге **docs** или кратко в файле **README.md**. //В примере окружение МХЕ будет компилироваться для 2х целей: i686-w64-mingw32.shared - 32х битная среда, динамические бибилиотеки (*.dll) на выходе; x86_64-w64-mingw32.shared - 64х битная среда, динамические бибилиотеки (*.dll) на выходе.//
 +        - **MXE_TMP** - каталог где будет происходить сборка окружения MXE, если у вас много оперативной памяти (>=32Гб) и каталог **/tmp** монтируется как файловая система **tmpfs**, то данную строчку можно раскомментировать для ускорения сборки
 +        - **LOCAL_PKG_LIST** - список пакетов, которые будут компилироваться по-умолчанию. //В примере показан минимальный список необходимый для сборки полного комплекта Psi+//
 +        - **JOBS** - количество потоков сборки, используется для ускорения сборки на многоядерных системах, значение обычно ставят из соображения **количество ядер процессора + 1**
 +        - **override MXE_PLUGIN_DIR** - в примере эта строка закомментирована. Таким образом можно указать версию компилятора или указать какой-то специфический набор опций (обязательно загляните в каталог plugins). //В примере указан gcc9 как компилятор, а по-умолчанию версия может быть старее или новее.//
 +  
  
 +  * Закончив с настройкой окружения, запускаем его сборку командой:
  
 +<code>
 +make
 +</code>
  
 +Подробнее об опциях сборки пакетов [[https://mxe.cc/#usage|https://mxe.cc/#usage]]
  
 +**ВНИМАНИЕ** Сборка указанных в примере пакетов для 2х целей будет длиться приблизительно 6 часов, в зависимости от мощности вашего сборочного компьютера.
  
 +**СОВЕТ 1** Делайте резервные копии каталога mxe/usr перед каждым обновлением сборочного окружения, особенно если собираете MXE из master
  
 +  * После окончания сборки окружения МХЕ можно приступать к сборке Psi+
  
 +==== Сборка Psi+ в окружении MXE ====
  
 +  * Создаем общий каталог сборки и скачиваем исходные коды программы Psi+ при помощи утилиты **git**
  
 +<code bash>
 +mkdir -p ~/github/build
 +cd ~/github
 +git clone https://github.com/psi-plus/psi-plus-snapshots.git
 +</code>
  
-===== Компиляция плагинов Psi+ =====+  * Настраиваем окружение для сборки
  
-  * Скачиваем скрипт **[[https://raw.githubusercontent.com/psi-plus/maintenance/master/scripts/win32/auto-compiler-all-in-one.cmd|auto-compiler-all-in-one.cmd]]** в новую папку (например, **C:\build**) +<code bash> 
-  * Включаем необходимый для сборки параметр **MakePlugins** в положение **1**: +unset `env | \ 
-<code> +grep -vi '^EDITOR=\|^HOME=\|^LANG=\|MXE\|^PATH=' | \ 
-SET MakeClassic=0 +grep -vi 'PKG_CONFIG\|PROXY\|^PS1=\|^TERM=' | \ 
-SET UploadClassic=0 +cut -d '=' -f1 tr '\n' ' '` 
-SET MakeClassicDebug=0 +export PATH=~/github/mxe/usr/bin:$PATH #тут лучше прописать полный путь к МХЕ
-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+
 </code> </code>
-  * Запускаем скрипт **auto-compiler-all-in-one.cmd** в папке **C:\build** и ждём окончания его выполнения 
  
-Если скрипт отработал успешно, то в рабочей папке **C:\build** появится архив, содержащий скомпилированные и готовые к работе плагины Psi+.+  * Запускаем симейк к исполнению для конкретной цели, например:
  
 +<code bash>
 +cd ~/github/build
 +i686-w64-mingw32.shared-cmake -DDEV_MODE=ON -DBUNDLED_IRIS_ALL=ON -DENABLE_PLUGINS=ON -DBUILD_PSIMEDIA=ON -DCHAT_TYPE=webkit ../psi-plus-snapshots
 +</code>
  
 +тут вместо **i686-w64-mingw32.shared-cmake** нужно указывать конкретный симейк для конкретной цели. Для варианта из примера это может быть также **x86_64-w64-mingw32.shared-cmake**.
  
 +Эта команда запустит конфигурацию Psi+ для сборки самой Psi+ чатлогом на движке QtWebkit, а также всех плагинов и плагина psimedia
  
 +  * Запускаем команду сборки и подготовки собранных бинарных файлов к работе
  
-===== Альтернативный способ сборки Psi+ под OS Windows (утилитой cmake) ===== +<code bash> 
- +i686-w64-mingw32.shared-cmake --build . --target all --target prepare-bin --target prepare-bin-libs --parallel 4   #тоже самое что и JOBS в файле конфигурации МХЕ 
- +</code>
  
 +В реультате в каталоге **~/github/build/psi** будет собран *.exe файл Psi+ и в каталоге **~/github/build/psi/plugins** будут собраны все плагины *.dll, а также в каталог **~/github/build/psi** будут скопированы все необходимые для запуска Psi+ библиотеки зависимостей
  
 +Подробнее про флаги для сборки при помощи CMake можно почитать [[https://github.com/psi-im/psi/blob/master/Readme-cmake-ru.txt|тут]]
  
  
ru/mingw32.1590756538.txt.gz · Последнее изменение: 2020/05/29 12:48 — kukuruzo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki