more pretty md files

This commit is contained in:
2016-02-02 00:55:13 +07:00
parent c0ad1a6912
commit 518956bdff
39 changed files with 1550 additions and 484 deletions

View File

@ -7,17 +7,29 @@ tags: archlinux, linux, сборка, qutim
title: Сборка Qutim с Qt5
short: building-qutim-using-qt5
---
Если кто-то не знает, [Qutim](//qutim.org "Домашняя страница Qutim") - мультипротокольный кросс-платформенный месседжер. Написан он на `CPP` с использованием библиотек Qt. Проект активно развивается. В этой статье речь пойдет о реализации сборки данного пакета в Archlinux с использованием библиотек Qt5 (а не Qt4, как это делают текущие пакеты в AUR).
Если кто-то не знает, [Qutim](//qutim.org "Домашняя страница Qutim") -
мультипротокольный кросс-платформенный месседжер. Написан он на `CPP` с
использованием библиотек Qt. Проект активно развивается. В этой статье речь
пойдет о реализации сборки данного пакета в Archlinux с использованием библиотек
Qt5 (а не Qt4, как это делают текущие пакеты в AUR).
<!--more-->
## <a href="#problems" class="anchor" id="problems"><span class="octicon octicon-link"></span></a>Что не так?
Да все так. Просто пакет использует для сборки систему [qbs](//qt-project.org/wiki/qbs "Wiki"), которая, на мой взгляд, немного странная. Пакет, необходимый для сборки, [находится в AUR](//aur.archlinux.org/packages/qbs-git/ "AUR") (рекомендую git-версию). Когда я спросил у Andrea Scarpino (который сопровождает все KDE и Qt пакеты в официальные репозитории) по поводу переноса этого пакета в репозитории, он ответил, что всему свое время. В принципе, я с ним согласен, так как проект, судя по всему, еще немного сыроват.
Да все так. Просто пакет использует для сборки систему [qbs]
(//qt-project.org/wiki/qbs "Wiki"), которая, на мой взгляд, немного странная.
Пакет, необходимый для сборки, [находится в AUR]
(//aur.archlinux.org/packages/qbs-git/ "AUR") (рекомендую git-версию). Когда я
спросил у Andrea Scarpino (который сопровождает все KDE и Qt пакеты в
официальные репозитории) по поводу переноса этого пакета в репозитории, он
ответил, что всему свое время. В принципе, я с ним согласен, так как проект,
судя по всему, еще немного сыроват.
## <a href="#prepare" class="anchor" id="prepare"><span class="octicon octicon-link"></span></a>Подготовка
Установим зависимости. Что-то может быть пропустил, зависимости сканировал с использованием `namcap`:
Установим зависимости. Что-то может быть пропустил, зависимости сканировал с
использованием `namcap`:
```bash
pacman -Sy --asdeps clang git libc++abi qt5-quick1 qt5-x11extras
@ -26,21 +38,28 @@ yaourt -S --asdeps jreen-git qbs-git
### <a href="#qbs" class="anchor" id="qbs"><span class="octicon octicon-link"></span></a>Настройка qbs
Желающие могут почитать документацию [по ссылке](//qt-project.org/wiki/qbs "Wiki") или посмотреть примеры (включены в пакет). Загвоздка в том, что эта штука использует файл настроек, который, во-первых, нужно сначала сгенерировать, во-вторых, хранится в домашней директории (и только там). В теории, генерация файла настроек (`~/.config/QtProject/qbs.conf`) происходит следующим образом:
Желающие могут почитать документацию [по ссылке](//qt-project.org/wiki/qbs "Wiki")
или посмотреть примеры (включены в пакет). Загвоздка в том, что эта штука
использует файл настроек, который, во-первых, нужно сначала сгенерировать,
во-вторых, хранится в домашней директории (и только там). В теории, генерация
файла настроек (`~/.config/QtProject/qbs.conf`) происходит следующим образом:
```bash
qbs-setup-qt --detect
qbs-detect-toolchains
```
Сначала находим Qt для сборки, потом находим инструментарий (компиляторы, например). Дальше вставляем инструментарий (например, нам для Qutim нужен `clang`) в Qt, например, так:
Сначала находим Qt для сборки, потом находим инструментарий (компиляторы,
например). Дальше вставляем инструментарий (например, нам для Qutim нужен
`clang`) в Qt, например, так:
```bash
sed 's/clang\\/qt-5-2-0\\/g' -i ~/.config/QtProject/qbs.conf
```
Альтернативные варианты - править файл вручную или воспользоваться `qbs-config-ui` или `qbs-config` на Ваш выбор.
Так или иначе, нужный файл мы сгенерировали, сохраним его в будущей директории сборки:
Альтернативные варианты - править файл вручную или воспользоваться `qbs-config-ui`
или `qbs-config` на Ваш выбор. Так или иначе, нужный файл мы сгенерировали,
сохраним его в будущей директории сборки:
```ini
[General]
@ -142,7 +161,10 @@ cd qutim
HOME=$(pwd) qbs -j $(nproc) -d ../build release profile:qutim
```
Я пытался сделать универсальный способ сборки пакета, поэтому такое странное переназначение домашней директории. Флаг `-j` указывает число потоков сборки, флаг `-d` директорию сборки, `release` тип сборки (debug, release), `profile` используемый профиль, описанный в файле настроек.
Я пытался сделать универсальный способ сборки пакета, поэтому такое странное
переназначение домашней директории. Флаг `-j` указывает число потоков сборки,
флаг `-d` директорию сборки, `release` тип сборки (debug, release), `profile`
используемый профиль, описанный в файле настроек.
## <a href="#install" class="anchor" id="install"><span class="octicon octicon-link"></span></a>Установка
@ -150,7 +172,8 @@ HOME=$(pwd) qbs -j $(nproc) -d ../build release profile:qutim
HOME=$(pwd) sudo qbs install -d ../build --install-root "/usr" profile:qutim
```
Из нового - указание корневого каталога (`--install-root`). Без этого пакет будет установлен в `/` (`/bin` и `/lib`).
Из нового - указание корневого каталога (`--install-root`). Без этого пакет будет
установлен в `/` (`/bin` и `/lib`).
## <a href="#pkgbuild" class="anchor" id="pkgbuild"><span class="octicon octicon-link"></span></a>PKGBUILD