Система побудови Meson дозволяє розробнику швидко налаштувати загальноприйняті правила побудови артефактів програмного забезпечення (виконуваних файлів, бібліотек, тощо).
На даний момент деякі проекти з відкритим вихідним кодом успішно перейшли на систему побудови Meson. Наприклад, це проект Gtkmm на GitHub.
Так як і загалом Unix-подібні ОС в основному створені і використовуються в наукових проектах, система Meson також має деякі переваги для використання в цій галузі.
Із загальних відмінностей даної системи побудови, як повідомляє документаціїя і Вікі-сторінка проекту Meson, використовувана мова дещо подібна до мови Python, але використовує строгу типізацію. Також слід виділити що Meson підтримує цілий набір мов.
Основні посилання
Детальніше про історію потрібно звернутись на сайт проекту або Вікі-сторінку посилання розміщені нижче.
Основний сайт проекту Meson: https://mesonbuild.com/
Стаття на Wikipedia: https://en.wikipedia.org/wiki/Meson_(software)
Найпростіший проект
Розглянемо найпростіший файл meson.build проекту системи побудови Meson:
project( 'TheMesonEasyStarterDemoProject', 'cpp', license: 'Free to use', version: '0.1.0', meson_version: '>= 0.61.2', default_options: [ 'cpp_std=c++17', ], ) executable( meson.project_name(), ['main.cpp'], include_directories: [include_directories('.')], install: true, install_dir: 'bin' )
Опис команди-функції project
Даний файл і увесь мікро-проект для нього можна переглянути на GitHub репозиторії за адресою https://github.com/yuriysydor1991/kytok.org.ua-Meson-article-resources
У самому файлі meson.build оголошується проект відповідною командою project. У якій першим аргументом вказується загальна назва проекту, наприклад, TheMesonEasyStarterDemoProject у нашому випадку. Після чого вказується позиційний параметр для визначення використовуваної мови програмування, що у нашому випадку відповідає мові C++, а саме літералом 'cpp'.
Необхідно звернути увагу, що рядкові літерали, себто рядки символів, вказуються тільки одинарними лапками. Подвійні лапки не підтримуються.
Після основних позиційних параметрів функції project вказуються допоміжні іменовані на подобі:
- licence для вказування ліцензії;
- version для визначення версії поточного проекту;
- meson_version для вказування використовуваної версії Meson;
- default_options для параметрів по замовчуванню для проекту
Детальніше про команду project можна дізнитись за посиланням на головному сайті проекту https://mesonbuild.com/Reference-manual_functions.html#project
Опис команди-функції executable
Найпершим параметром команди executable передається цільова назва артефакту. У даному випадку це виконуваний бінарний файл.
Після ім'я необхідно вказати список С++ файлів котрі потрібно скомпілювати і скомпонувати (разом з іншими можливими проміжними стадіями) для отримання цільового артефакту побудови.
Далі йде необов'язковий параметр include_directories, який в даному випадку вказаний для наглядності і в даному простому прикладі проекту не несе обов'язкової інформаці. Проте, він з великою вірогідністю буде використовуватись у реальних проектах для вказування директорій пошуку заголовкових підключаємих файлів C++ проекту. Рекомендується використовувати відносні шляхи у використовуваній функції include_directories.
Параметри install і install_dir визначають чи є дана оголошена ціль побудови артефакту кандидатом для встановлення в цільову директорію.
Більш детально про команду executable можна знайти на офіційній сторінці документації https://mesonbuild.com/Reference-manual_functions.html#executable
Побудова проекту прикладу
Щоб спробувати побудувати даний найпростіший проект що знаходиться за адресою https://github.com/yuriysydor1991/kytok.org.ua-Meson-article-resources необхідно спочатку склонувати його у локальну директорію за допомогою виконання наступної комнади в терміналі (GNU/Лінукс):
git clone https://github.com/yuriysydor1991/kytok.org.ua-Meson-article-resources.git
Після чого можна відкрити директорію проекту командою:
cd kytok.org.ua-Meson-article-resources
І накінець сконфігурувати проект і викликати його побудову командами:
meson setup builddir && meson compile -C builddirПобудований артефакт можна знайти у піддиректорії builddir а саме ./builddir/TheMesonEasyStarterDemoProject
Розширений приклад у C++ проекті-шаблоні
Більш розширений приклад з використанням піддиректорій разом з файлом опцій Meson і деякими інтеграціями можна переглянути відвідавши репозиторій шаблонного проекту для C++ програм розміщеного за адресою https://github.com/yuriysydor1991/cpp-app-template/tree/appMeson