Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Мезонный ( / м ɛ . С ɒ п / ) [2] представляет собой программное средство для автоматизации здания (компиляция) программного обеспечения. Общая цель Meson - повысить продуктивность программистов. [3] Meson - это бесплатное программное обеспечение с открытым исходным кодом, написанное на Python под лицензией Apache License 2.0 . [4]

Совместимость [ править ]

Будучи написанным на Python, Meson изначально работает в Unix- подобных операционных системах, включая macOS , а также Microsoft Windows и другие операционные системы.

Meson поддерживает языки C , C ++ , CUDA , D , Objective-C , Fortran , Java , C # , Rust и Vala [5] и имеет механизм обработки зависимостей, называемый Wrap.

Meson поддерживает GNU Compiler Collection , Clang , Microsoft Visual C ++ и другие компиляторы. В проекте используется ниндзя в качестве основной серверной системы сборки, но также могут использоваться серверные части Microsoft Visual Studio или Xcode .

Язык [ править ]

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

Язык Meson намеренно не является полным по Тьюрингу и поэтому не может выражать произвольную программу. [6] Вместо этого произвольные шаги сборки помимо компиляции поддерживаемых языков могут быть представлены как настраиваемые целевые объекты.

Язык Meson строго типизирован , поэтому встроенные типы, такие как библиотека, исполняемый файл, строка и их списки, не являются взаимозаменяемыми. [7] В частности, в отличие от Make, тип списка не разбивает строки по пробелам. [6] Таким образом, пробелы и другие символы в именах файлов и аргументах программы обрабатываются чисто.

Скорость и правильность [ править ]

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

В отличие от чистого Make, отдельный шаг настройки гарантирует, что изменения аргументов, переменных среды и вывода команд не будут частично применены в последующих сборках, что может привести к устаревшей сборке.

Как и Ninja, Meson не поддерживает подстановку исходных файлов. [6] Требуя, чтобы все исходные файлы были перечислены в файлах определения сборки, временных меток файла определения сборки достаточно, чтобы определить, изменился ли набор исходных файлов, тем самым гарантируя обнаружение удаленных исходных файлов. CMake поддерживает подстановку, но не рекомендует ее по той же причине. [8]

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

Особенности [ править ]

Заявленная цель Meson - способствовать современным методам разработки. Таким образом, Meson знает, как выполнять сборку единства , сборку с тестовым покрытием , оптимизацию времени компоновки и т. Д. Без необходимости писать поддержку для этого программисту.

Подпроекты [ править ]

Meson не имеет эквивалента модулей CMake и в первую очередь полагается на pkg-config для поиска внешних по отношению к проекту зависимостей. Это не решение ада зависимостей , поскольку работа по удовлетворению отсутствующих зависимостей лежит на пользователе. В качестве альтернативы, зависимость может быть интернализована как подпроект - проект Meson внутри другого - либо содержащийся, либо как ссылка. [12] Это имеет недостаток, способствующий раздуванию программного обеспечения в случае общих зависимостей. Компромисс, который предпочитают упаковщики Linux, заключается в использовании подпроекта в качестве запасного варианта для внешней зависимости. [13]

Meson поддерживает подпроекты Meson и CMake. Файл сборки Meson также может относиться к службе WrapDB. [12]

Сравнение вариантов использования разрешения зависимостей в разных системах сборки
Заметки
^ Пакет CMake CMake может использовать либопакеты CMake,либо pkg-config, но, как показано в таблице, оба предназначены для поискаустановленныхзависимостей.

Кросс-компиляция [ править ]

Кросс-компиляция требует дополнительной настройки, которую Meson поддерживает в виде отдельного кросс-файла , который может быть внешним по отношению к проекту Meson. [15]

Усыновители [ править ]

GNOME поставил перед собой цель перенести свои проекты на Meson. [16] По состоянию на конец 2017 года GNOME Shell требует исключительно Meson после отказа от Autotools, [17] и центральные компоненты, такие как GTK + , Clutter-GTK , GLib и GStreamer, могут быть созданы с помощью Meson. [16]

Systemd полагается на Meson с момента отказа от Autotools в версии 234. [18]

Также на Meson были перенесены X.Org [19] и Mesa [20] .

На домашней странице Meson перечислены другие проекты, использующие Meson. [21]

См. Также [ править ]

  • Список программного обеспечения для автоматизации сборки § Создание сценария сборки

Ссылки [ править ]

  1. ^ "Релизы - мезоностроение / мезон" . Проверено 14 февраля 2021 г. - через GitHub . CS1 maint: обескураженный параметр ( ссылка )
  2. ^ a b «Сделать системы сборки не отстойными (видео linux.conf.au)» .
  3. ^ "Система сборки высокой производительности" . Meson стремится оптимизировать производительность программистов, предоставляя простую готовую поддержку современных инструментов и методов разработки программного обеспечения, таких как модульные тесты, отчеты о покрытии, Valgrind, CCache и т. Д.
  4. ^ «мезоностроение / мезон: система построения мезона» . GitHub . Проверено 13 апреля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  5. ^ «Справочное руководство» .
  6. ^ a b c d "Часто задаваемые вопросы о Meson" .
  7. ^ "Синтаксис мезона" .
  8. ^ "Команда CMake FILE" . Примечание. Мы не рекомендуем использовать GLOB для сбора списка исходных файлов из вашего исходного дерева. Если файл CMakeLists.txt не изменяется при добавлении или удалении источника, сгенерированная система сборки не может знать, когда запросить CMake для регенерации.
  9. ^ «Нерекурсивные сделать считается вредным» (PDF) . Рекурсивный Make считается вредным по очень веским причинам (Miller 1998); невозможно точно отслеживать зависимости, когда система сборки состоит из отдельных компонентов, которые вызывают друг друга.
  10. ^ «Сделать тест не зависит от make all» . Система отслеживания проблем Kitware . 23 июня 2016 . Дата обращения 3 сентября 2020 . CS1 maint: обескураженный параметр ( ссылка )
  11. ^ «Поддержка CMake для предварительно скомпилированных заголовков» . Проверено 13 марта 2018 . CS1 maint: обескураженный параметр ( ссылка )
  12. ^ a b "Обернуть руководство по системе зависимостей" .
  13. ^ «Зависимости Meson и сторонних разработчиков. Только один правильный способ» .
  14. ^ https://cmake.org/cmake/help/v3.15/module/ExternalProject.html
  15. ^ "Кросс-компиляция" .
  16. ^ a b «Цель GNOME: портировать модули для использования системы сборки Meson» .
  17. ^ «Дебюты бета-версии GNOME 3.26: больше переноса мезонов, действие Wayland» .
  18. ^ "Отказаться от поддержки автоинструментов" .
  19. ^ «Поддержка Meson появилась на сервере X.Org» .
  20. ^ «Разработчики Mesa приближаются к отказу от системы сборки Autotools в пользу Meson» .
  21. ^ «Список проектов, использующих Meson» .

Внешние ссылки [ править ]

  • Официальный веб-сайт