meson

Современная система сборки с открытым исходным кодом, предназначенная для ускорения и упрощения процесса создания программного обеспечения. Она использует язык описания сборки, похожий на Python, и предоставляет высокоуровневые абстракции для компиляции, линковки и установки программ на множестве платформ. Meson стремится быть быстрой, удобной для пользователя и менее подверженной ошибкам по сравнению с традиционными системами сборки, такими как Autotools или CMake.

Особенности

  • простой и читаемый синтаксис на языке, похожем на Python;
  • автоматическое определение зависимостей и параметров компилятора;
  • высокая производительность благодаря параллельной сборке и минимальным накладным расходам;
  • интеграция с современными инструментами (pkg-config, CMake, Visual Studio, Xcode).

Основные компоненты

Meson состоит из нескольких ключевых компонентов, которые обеспечивают описание проекта, конфигурацию, сборку и установку (подробнее с документацией можно ознакомиться здесь).

Язык описания сборки

Meson использует доменно-специфичный язык (DSL), основанный на Python, который позволяет описывать цели сборки, зависимости и настройки проекта в декларативном стиле. Этот язык прост для чтения и написания, что снижает вероятность ошибок.

Основные элементы языка:

  • Переменные и арифметические операции;
  • Условные конструкции (if, else);
  • Циклы (foreach) для обработки списков;
  • Функции для работы с файлами, строками и путями;
  • Модули для расширения функциональности.

Проекты и цели сборки

В Meson проект описывается в файле meson.build, который определяет цели сборки (executable, library, shared library, static library) и их свойства. Каждая цель может иметь свои зависимости, флаги компиляции и параметры установки.

Основные функции для создания целей:

  • project() — объявление проекта с именем и поддерживаемыми языками;
  • executable() — создание исполняемого файла;
  • library() — создание библиотеки (статической или разделяемой);
  • shared_library() и static_library() — явное указание типа библиотеки;
  • declare_dependency() — определение зависимостей для использования в других целях.

Управление зависимостями

Meson предоставляет мощные средства для обнаружения и управления зависимостями, включая системные библиотеки, pkg-config и CMake-пакеты. Библиотека также поддерживает встроенные (wrap) зависимости для автоматической загрузки и сборки стороннего кода.

Функции для работы с зависимостями:

  • dependency() — поиск зависимости через pkg-config, CMake или системные пути;
  • find_program() — поиск исполняемых файлов (компиляторов, утилит);
  • find_library() — поиск библиотек в системе;
  • Поддержка подпроектов (subprojects) через систему wraps.

Конфигурация и опции проекта

Meson позволяет настраивать проект через опции (options), которые могут быть булевыми, строковыми, числовыми или перечислимыми. Опции могут быть установлены через командную строку, файлы конфигурации или интерактивно.

Типы опций и управление:

  • Опции проекта: определяются в meson_options.txt;
  • Получение и установка значений опций через get_option() и set_option();
  • Опции компилятора и линкера через add_global_arguments() и add_project_arguments();
  • Поддержка кросс-компиляции через файлы кросс-компиляции.

Кросс-компиляция и поддержка различных платформ

Meson обеспечивает отличную поддержку кросс-компиляции, позволяя собирать проекты для целевых платформ, отличных от системы сборки. Она также учитывает различия между операционными системами и компиляторами.

Возможности кросс-компиляции:

  • Файлы кросс-компиляции с описанием целевой системы;
  • Автоматическое определение компиляторов и их свойств;
  • Управление путями установки для целевой системы;
  • Поддержка различных ABI и архитектур.

Система модулей и расширения

Meson включает систему модулей, которые предоставляют дополнительные функции для общих задач, таких как работа с GNOME, Qt, Android, Windows-ресурсами и многим другим.

Популярные модули:

  • gnome — интеграция с GNOME (GResources, GIR, GSettings);
  • qt5 и qt6 — поддержка приложений Qt;
  • windows — работа с ресурсами Windows (RC-файлы, манифесты);
  • pkgconfig — генерация файлов .pc для библиотек;
  • python — интеграция с Python (установка модулей, расширения).

Сборка и установка

Meson генерирует сборочные файлы для различных бэкендов (Ninja, Visual Studio, Xcode), которые затем используются для фактической сборки. Установка файлов управляется через правила в meson.build.

Этапы сборки и установки:

  • meson setup — настройка проекта и генерация сборочных файлов;
  • meson compile — сборка проекта (обычно через Ninja);
  • meson test — запуск тестов;
  • meson install — установка собранных файлов в систему;
  • meson devenv — запуск команд в среде разработки проекта.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "meson/1.6.0@aurora",
    )    

Процесс локальной сборки описан в документации.

meson

a project to create the best possible next-generation build system
Лицензия
Apache-2.0
Версия
Домашняя страница
Скачать
package
3.62 Mb
MD5: 65d55716ebeeb21ea3ed706b2019e897
Updated: 08.04.2026, 21:01:07
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.