Конфигурация проекта с Ninja
Ninja — это быстрый и эффективный инструмент сборки, который используется для сборки проектов программного обеспечения. Он заменяет устаревшие и медленные системы сборки, такие как make или CMake. Ninja обеспечивает простой и минималистичный язык описания сборки, что делает его легким в использовании и позволяет быстро выполнять сборку проекта.
Конфигурация проекта с ninja включает определение целей сборки, задание зависимостей между файлами и определение команд, которые нужно выполнить для сборки каждой цели. На основе этой конфигурации ninja генерирует файл сборки (обычно с расширением .ninja), который затем используется для запуска сборки проекта.
Сборка проектов с использованием инструмента Ninja предоставляет различные способы, которые обеспечивают гибкость и удобство в разработке и сборке программного обеспечения.
- Конфигурация проекта при использовании CMake
- Cборка проекта в Аврора IDE
- Сборка через mb2
- Сборка через apptool
Конфигурация проекта при использовании CMake
Конфигурация проекта с ninja может быть осуществлена вручную, но часто используются высокоуровневые инструменты, такие как CMake, которые автоматически генерируют конфигурацию с ninja на основе заданных параметров проекта. Для этого нужно вносить следующие правки в spec-файл:
-
В spec файле, система сборки будет проверять наличие пакета "ninja" на хост-системе во время сборки пакета. Поэтому необходимо добавить строчку:
BuildRequires: ninja
-
Также в зависимости сборки рекомендуется добавить cmake:
BuildRequires: cmake
-
В разделе
%build
нужно указать инструкции, необходимые для компиляции и сборки пакета с ninja:%build %cmake -GNinja %ninja_build
-
В разделе
%install
настройки, которые определяют процедуру установки пакета для сборки, нужно также изменить на ninja:%install %make_install %ninja_install
Пример spec-файла для приложения MimeHandler:
Name: ru.auroraos.MIMEHandler
Summary: An application that demonstrates how to create and register your own MIME type handler
Version: 0.1
Release: 1
License: BSD-3-Clause
URL: https://auroraos.ru
Source0: %{name}-%{version}.tar.bz2
Requires: sailfishsilica-qt5 >= 0.10.9
Requires: amberpdf-qml-plugin
BuildRequires: pkgconfig(auroraapp)
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5DBus)
BuildRequires: pkgconfig(Qt5Qml)
BuildRequires: pkgconfig(Qt5Quick)
BuildRequires: cmake
BuildRequires: amberpdf
BuildRequires: ninja
%description
Приложение, демонстрирующее, как создать и зарегистрировать собственный обработчик типа MIME.
%prep
%autosetup
%build
%cmake -GNinja
%ninja_build
%install
%ninja_install
%files
%defattr(-,root,root,-)
%{_bindir}/%{name}
%defattr(644,root,root,-)
%{_datadir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/icons/hicolor/*/apps/%{name}.png
Пример .spec файла для приложения TabViewDemo.
Cборка проекта в Аврора IDE
Сборка в Аврора IDE:
- Открыть проект в Аврора IDE.
- Проверить настройки сборки и убедиться, что Ninja выбран в качестве генератора. По умолчанию в IDE выбран генератор Ninja для сборки проекта.
- Настроить другие параметры сборки (если необходимо).
- Нажать кнопку Собрать проект для начала сборки проекта.
Известная проблема при сборке CMake-проектов в SDK: IDE определяет систему сборки по возможностям компьютера разработчика, на котором запущена, а не сборочного окружения, которое используется для работы. Проблема возникает только для проектов, написанных с помощью UnixMakeFiles.
Для решения этой проблемы необходимо убрать строчку -GUnix Makefiles
или -Gninja
из spec-файла,
а затем выполнить настройку с помощью кнопки Re-configure with initial parameters.
В этом случае произойдёт поиск средства сборки согласно параметру сборки, указанному в spec-файле.
Сборка через mb2
Сборка пакетов с использованием скрипта mb2
вызывается из Build Engine.
Для сборки необходимо выполнить следующие шаги:
-
С помощью интерфейса командной строки необходимо авторизоваться в среде сборки.
~/AuroraOS/bin/sfdk engine exec
-
Далее необходимо выполнить команду для среды сборки проекта с помощью mb2:
mb2 -s [путь к *.spec] -t [цель] build
Сборка через apptool
Сборка через apptool (сборки i486, arm32, arm64):
-
С помощью интерфейса командной строки необходимо авторизоваться в среде сборки.
docker run -it --rm -u `id -u`:`id -g` -v "$PWD":/sources -w /sources hub.omp.ru/public/sdk-build-tools
-
Выполнить команду
apptool build
для сборки проекта с помощью apptool и указать целевую архитектуру, если необходимо (например,--arch=i486
,--arch=arm32
,--arch=arm64
).