MesonBook

Советую посмотреть вот эту презентацию чтобы лучше понимать зачем стоит использовать Meson. https://youtu.be/SCZLnopmYBM

Вот список каких то фич:

Features

  • multiplatform support for Linux, macOS, Windows, GCC, Clang, Visual Studio and others

  • supported languages include C, C++, D, Fortran, Java, Rust, Vala, C#

  • build definitions in a very readable and user friendly non-Turing complete DSL

  • cross compilation for many operating systems as well as bare metal

  • optimized for extremely fast full and incremental builds without sacrificing correctness

  • built-in multiplatform dependency provider that works together with distro packages

  • fun!

Вообщем лучше всего Meson описывает третий пункт, это DSL для сборок.

Hello world

Начнем с самого простого, у вас 1 файл, который является программой которую можно запустить, а не библиотекой.

source

#include<stdio.h>

int main(int argc, char **argv) {
  printf("Hello there.\n");
  return 0;
}

meson.build

project('simple', 'c')
executable('myexe', 'source.c')

Даже не уверен стоит ли тут что-то пояснять, в этом вся суть Meson. Нудаладна, project, с этой строчки начинается любой проект, первый аргумент название проекта, далее идет перечисление языков которые используются в проекте(далее будет рассмотрен такой пример)

executable является таргетом этого билд скрипта, в одном билдскрипте их может быть сколько угодно. Первый аргумент название, второй список файлов.

Несколько файлов

project('simple', 'c')
src = ['source1.c', 'source2.c', 'source3.c']
executable('myexe', src)
project('simple', 'c')
src = ['source1.c', 'source2.c', 'source3.c']
executable('myexe', src)

src является переменной, которая содержит массив файлов, затем мы передаем его в executable.

Аргументы могут быть именованными, чаще всего люди используют их именно так

executable('myexe', sources : src)

Тесты

test('simple test', exe)

Первый аргумент название теста, второй executable target.

Last updated