Найти в Дзене
TechrooM

Meson как собрать и пользоваться

Meson может работать с разными бэкэндами (Ninja, VisualStudio, XCode), в Unix подобных ОС нам предлагают использовать Ninja, минималистичный иснтрумент, простой и мощный, в основном ориентированный на скорость сборки (https://ninja-build.org/).В моем дистрибутиве Linux Mint 20.3 установлена версия 0.53.2 и она поддерживает следующие языки (C, C++, D , Fortran,Rust , Object-С), для демонстрации первичной настройки простого проекта из одного файла и сборки хватит и С++.

Создаем следующую структуру каталогов:

-2

Система сборки Meson требует, чтобы мы хранили исходники отдельно от места, где мы будем собирать проект. Для сборки был создан каталог build. Далее переходим в корень проекта и создаем новый проект, для этого вызываем команду:

$ meson init --force -n testproject -l cpp --builddir ./build ./src/*

init- это команда, которая задает основное действие. Далее идет необязательна для первого запуска опция --force, которая принудительно пересоздаст файл проекта, если найдет существующий файл meson.build в каталоге. Далее указываем язык проекта, после каталог, в котором будем собирать проект и место где, лежат исходники.

После выполнения команды в окне терминала получим вывод:

-3

Теперь у нас появился файл проекта, в котором будет храниться конфигурация, и дерево каталогов выглядит вот так:

-4

Далее нам необходимо сконфигурировать проект для сборки и отладки, для этого выполняем команду:

$ meson setup --optimization 0 --werror ./build

По умолчанию meson создает конф файл для Ninja с параметрами для отладки, в качестве примера отключим оптимизацию и сделаем все ошибки фатальными.

Получим вывод в терминал:

-5

После настройки наш проект порядком растолстел на файлы и каталоги:

-6

Для того, чтобы собрать проект запускаем ninja

$ ninja -C ./build

В структуре проекта снова пополнение:

-7

Если мы хотим собрать релиз сборку, то необходимо изменить конфигурацию проекта. Для этого выполняем команду:

$ meson configure --optimization 2 --werror --buildtype release ./build

и незабываем обязательно пересоздать файл для Ninja, иначе собираться проект будет по старому конф файлу:

$ meson --reconfigure ./build

повторно собираем проект:

$ninja -C ./build

теперь проект собран без отладочных символов, проверить это можно с помощью gdb, он вежливо сообщит что:

No debugging symbols found in ./testproject

Используя приведенные команды мы уже можем разрабатывать и тестировать проекты, но все это утомительно вводить и лучше использовать IDE, к сожалению в текущей версии Linux Mint (2022 г. у меня 20.3) есть только Qtcreator 4.11.0-2build2 что соответствует 2019 г. и в ней нет поддержки Meson.
В свежем релизе 8.0 есть экспериментальная поддержка данной системы сборки, включить ее можно через меню Help->About Plugins-> Build system.

П.С.
Нло прилетело и оставило это здесь скачать Qt Сreator 8.0

qt-creator-opensource-linux-x86_64-8.0.0.run

md5sum 2d9f447adcc0e3e70cab403c51608c05