Jump to content

Мезон (программное обеспечение)

(Перенаправлено из системы сборки Meson )

Мезон
Разработчик(и) Юсси Пакканен
Первоначальный выпуск 2 марта 2013 г .; 11 лет назад ( 2013-03-02 )
Стабильная версия
1.5.0 [1]  Отредактируйте это в Викиданных / 10 июля 2024 г .; 26 дней назад ( 10 июля 2024 г. )
Репозиторий
Написано в Питон
Операционная система Кросс-платформенный
Тип Инструменты разработки программного обеспечения
Лицензия Лицензия Апач 2.0
Веб-сайт мезонбилд  Edit this on Wikidata

Мезон ( / ˈ m ɛ . s ɒ n / ) [2] — программный инструмент для автоматизации сборки (компиляции) программного обеспечения. Meson применяет конвенциональный подход к настройке , продвигая стандартные инструменты и практику разработки вместо предоставления пользователю неограниченной гибкости. [3] Meson — бесплатное программное обеспечение с открытым исходным кодом , написанное на Python под лицензией Apache 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++ и другие компиляторы, включая нетрадиционные компиляторы, такие как Emscripten и Cython . [6] В проекте используется ninja в качестве основной серверной системы сборки, но также можно использовать серверные части Microsoft Visual Studio или Xcode .

Синтаксис файлов описания сборки Meson (язык Meson) заимствован из Python , но не является Python: он спроектирован таким образом, что его можно переопределить на любом другом языке; [7] например, мюон [8] это реализация C, а Meson++ [9] это реализация C++. Зависимость от Python — это деталь реализации.

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

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

Особенность Мезон CMake Делать
Типы данных Да Нет Нет
Список типов данных Да строка, разделенная точкой с запятой строка, разделенная пробелами
Тип данных словаря с 0.47.0 Нет Нет
Подстановка файлов Нет Да Да
Расширяемо с помощью пользовательских функций Нет Да Да
Может читать вывод произвольных команд (во время настройки) run_command Да Да
Может запускать произвольные команды во время сборки в качестве рецептов пользовательских целей. Да Да Да

Скорость и корректность

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

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

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

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

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

функция скорости Мезон CMake Делать
Запрещает устаревшие сборки (частичная перестройка при изменении входных данных). Да (если нет ошибок) [ противоречивый ] Если не использовать исходные файлы [ нужна ссылка ] Рекурсивный Make (идиоматический шаблон) в этом отношении не работает. [12]
Цель, которая запускает тесты, зависит от создаваемых тестов (например, test зависит от all) Да [ нужна ссылка ] Нет, и add_dependencies(test all) запрещено, поскольку test цель зарезервирована. [13] Тривиально добавить [ нужна ссылка ]
Кэш Автоматический [ нужна ссылка ] Тривиально добавить [ нужна ссылка ] Тривиально добавить [ нужна ссылка ]
Distcc Тривиально добавить [ нужна ссылка ] Тривиально добавить [ нужна ссылка ] Тривиально добавить [ нужна ссылка ]
Перелинковка с учетом таблиц символов Да [ нужна ссылка ] Сделай это сам [ нужна ссылка ] Сделай это сам [ нужна ссылка ]
Предварительно скомпилированные заголовки Необязательный [ нужна ссылка ] CMake ≥ 3,16 [14] [2] Сделай это сам [ нужна ссылка ]

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

Мезон CMake Автоинструменты
Создать configure сценарий Нет Нет make dist
Установите правильный каталог установки библиотеки в x86_64 Unix Автоматический Не стандартизировано ./configure --libdir=/usr/lib64

Подпроекты

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

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

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

Сравнение вариантов использования разрешения зависимостей в разных системах сборки
вариант использования Мезон CMake Груз
Поиск установленных зависимостей pkg-config , пакеты CMake Модуль CMake, pkg-config ?
Автоматическая загрузка зависимостей подпроект FetchContent [18] Зависимость от груза
Поиск установленных зависимостей с резервной загрузкой pkg-config + подпроект Модуль CMake/pkg-config + FetchContent?
генератор файлов pkg-config Да Нет Нет
Облегчение использования в качестве автоматически загружаемой зависимости Может использоваться как подпроект Meson. Нет С регистрацией в ящиках .что

Кросс-компиляция

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

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

Усыновители

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

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

Многие проекты freedesktop.org перешли на Meson. Systemd полагается на Meson с момента отказа от Autotools в версии 234. [22] а также X.Org [23] и Меса [24] были портированы на Мезон.

Поддержка Meson Fortran и Cython была улучшена, чтобы помочь различным научным проектам перейти с setuptools для Meson, например SciPy . [25] Meson также можно использовать в качестве бэкэнда PEP517 для создания колес Python через мезон-питон . пакет [26]

Другие известные проекты, использующие Meson, включают QEMU и PostgreSQL ; на домашней странице Meson перечислены дальнейшие проекты, использующие Meson. [27]

См. также

[ редактировать ]
  1. ^ «Выпуск 1.5.0» . 10 июля 2024 г. Проверено 23 июля 2024 г.
  2. ^ Перейти обратно: а б «Как сделать системы сборки не отстойными (видео linux.conf.au)» . Ютуб .
  3. ^ «Высокопроизводительная система сборки» . Meson стремится оптимизировать производительность программистов, предоставляя простую, готовую к использованию поддержку современных инструментов и методов разработки программного обеспечения, таких как модульные тесты, отчеты о покрытии, Valgrind, CCache и тому подобное.
  4. ^ «mesonbuild/meson: Система сборки мезонов» . Гитхаб . Проверено 13 апреля 2016 г.
  5. ^ «Справочное руководство» .
  6. ^ «Идентификаторы компилятора» .
  7. ^ Перейти обратно: а б с д «Часто задаваемые вопросы по мезону» .
  8. ^ "мюон.сборка" . Проверено 27 января 2023 г.
  9. ^ Бейкер, Дилан (28 мая 2021 г.). "dcbaker/мезон-плюс-плюс" . Проверено 28 мая 2021 г.
  10. ^ «Мезонный синтаксис» .
  11. ^ «Команда CMake FILE» . Примечание. Мы не рекомендуем использовать GLOB для сбора списка исходных файлов из вашего дерева исходного кода. Если файл CMakeLists.txt не изменяется при добавлении или удалении источника, созданная система сборки не может знать, когда просить CMake выполнить повторную генерацию.
  12. ^ «Нерекурсивный способ считать вредным» (PDF) . Майкрософт . Рекурсивный Make считается вредным по очень веским причинам (Miller 1998); невозможно точно отслеживать зависимости, если система сборки состоит из отдельных компонентов, вызывающих друг друга.
  13. ^ «Make test не зависит от make all» . Трекер проблем с комплектным ПО . 23 июня 2016 г. Проверено 3 сентября 2020 г.
  14. ^ «Поддержка CMake для предварительно скомпилированных заголовков» . Проверено 13 марта 2018 г.
  15. ^ «Зависимости с пользовательской функцией поиска — документация Meson» .
  16. ^ Перейти обратно: а б «Руководство по системе зависимостей переноса» .
  17. ^ «Мезон и сторонние зависимости. Только один правильный путь» .
  18. ^ «FetchContent — Документация CMake 3.15.7» .
  19. ^ «Кросс-компиляция» .
  20. ^ Перейти обратно: а б «Цель GNOME: портировать модули для использования системы сборки Meson» .
  21. ^ «Дебют бета-версии GNOME 3.26: больше портирования мезонов, действие Wayland» .
  22. ^ «Отказаться от поддержки autotools» . Гитхаб .
  23. ^ «Поддержка Meson появилась на сервере X.Org» .
  24. ^ «Разработчики Mesa приближаются к отказу от системы сборки Autotools в пользу Meson» .
  25. ^ «Как построить SciPy с помощью Meson» .
  26. ^ «Пакет мезон-питон на PyPI» .
  27. ^ «Список проектов, использующих Meson» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 10cd441b44e742030706e586e3ba7923__1719597960
URL1:https://arc.ask3.ru/arc/aa/10/23/10cd441b44e742030706e586e3ba7923.html
Заголовок, (Title) документа по адресу, URL1:
Meson (software) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)