К основному содержанию
скилл CX Codex

meson — скилл для Claude Code: сборка C/C++ проектов

Скилл для ИИ-агентов, который помогает настроить Meson, разобраться с wrap-зависимостями и кросс-компиляцией в C/C++ проектах.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mohitmishra786/low-level-dev-skills --skill meson -a claude-code
Открыть на GitHub

Что делает meson

Скилл описывает полный рабочий цикл Meson: настройку проекта через meson setup, сборку, тесты и установку. Внутри — готовые шаблоны meson.build, таблица соответствия флагов --buildtype, примеры meson_options.txt с булевыми, combo и integer опциями. Агент подскажет, как объявить dependency(), подключить include_directories и связать статическую библиотеку с исполняемым файлом.

Отдельный блок посвящён системе wrap: поиск через meson wrap search, установка из wrapdb, список и обновление. Показано, как в meson.build задать fallback на wrap, если системная библиотека не найдена. Для кросс-компиляции приводится пример cross-файла с секциями [binaries], [properties] и [host_machine] — этого достаточно, чтобы собрать проект под ARM.

Есть шпаргалка по миграции с CMake: add_executable превращается в executable(), find_package — в dependency(), add_subdirectory — в subdir(). Meson использует Ninja как бэкенд, поэтому для тонкой настройки сборки придётся смотреть и в сторону Ninja. Если проект уже собирается через CMake и команда к нему привыкла, миграция потребует переписать все файлы сборки — это повод сначала оценить объём работы.

Какие задачи решает

  • настроить сборку C/C++ проекта с нуля на Meson
  • добавить внешнюю зависимость через wrap, когда системной библиотеки нет
  • собрать проект под ARM с cross-файлом
  • переписать файлы сборки с CMake на Meson
  • задать опции сборки в meson_options.txt и использовать их в meson.build

Примеры запросов агенту

  • Помоги настроить meson setup builddir для проекта на C с LTO и санитайзерами
  • Как добавить zlib через wrap, если системная версия не подходит?
  • Переведи этот CMakeLists на meson.build

Как установить meson

1Через Skills CLI (Vercel)

npx skills add mohitmishra786/low-level-dev-skills --skill meson -a claude-code

2Вручную: положить файлы

~/.claude/skills/meson/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/meson/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о meson

Как установить meson в Claude?

Выполните npx skills add mohitmishra786/low-level-dev-skills --skill meson -a claude-code. Скилл появится в ~/.claude/skills/meson/SKILL.md.

Что делает скилл meson?

Проводит агента через настройку Meson-проекта, конфигурацию опций, управление зависимостями через wrap и кросс-компиляцию. Активируется на запросы про meson setup, meson compile, meson wrap, meson test, cross-file и meson.build.

Чем этот скилл отличается от скилла cmake?

Скилл cmake нужен, когда проект собирается через CMake. Скилл meson — когда используется Meson или идёт миграция с CMake и Autotools. Внутри есть шпаргалка соответствия команд.

Исходный текст

SKILL.md · MIT
---
name: meson
description: Meson build system skill for C/C++ projects. Use when setting up a Meson project, configuring build options, managing dependencies with the wrap system, cross-compiling, or integrating Meson with CI. Activates on queries about meson setup, meson compile, meson wrap, meson test, cross-file, meson.build, or migrating from CMake/Autotools to Meson.
---

# Meson

## Purpose

Guide agents through Meson project setup, build configuration, the wrap dependency system, and cross-compilation — covering the build system used by GLib, systemd, GStreamer, Mesa, and many major C/C++ projects.

## Triggers

- "How do I set up a Meson build?"
- "How do I add a dependency in Meson?"
- "How do I cross-compile with Meson?"
- "Meson wrap isn't finding my dependency"
- "How do I configure build options in Meson?"
- "How do I migrate from CMake/Autotools to Meson?"

## Workflow

### 1. Project setup

```bash
# Configure (source-dir, build-dir are positional)
meson setup builddir

# With options
meson setup builddir \
    --buildtype=release \
    --prefix=/usr/local \
    -Db_lto=true \
    -Db_sanitize=address

# Reconfigure (change options on existing builddir)
meson configure builddir -Dbuildtype=debug

# Show all available options
meson configure builddir
```

| `--buildtype` | Equivalent flags |
|---------------|-----------------|
| `debug` (default) | `-O0 -g` |
| `debugoptimized` | `-O2 -g` |
| `release` | `-O3 -DNDEBUG` |
| `minsize` | `-Os -DNDEBUG` |
| `plain` | No flags added |

### 2. Build and test

```bash
# Build (from source directory)
meson compile -C builddir

# Or enter builddir and use ninja directly
cd builddir && ninja

# Run tests
meson test -C builddir
meson test -C builddir --verbose          # show test output
meson test -C builddir -t 5               # 5x timeout multiplier
meson test -C builddir --suite unit       # run only 'unit' suite

# Install
meson install -C builddir
# Dry run
meson install -C builddir --dry-run
```

### 3. meson.build structure

```python
project('myapp', 'c', 'cpp',
  version : '1.0.0',
  default_options : [
    'c_std=c11',
    'cpp_std=c++17',
    'warning_level=2',
  ]
)

# Find system dependencies
glib_dep = dependency('glib-2.0', version : '>=2.68')
threads_dep = dependency('threads')

# Include directories
inc = include_directories('include')

# Library
mylib = static_library('mylib',
  sources : ['src/lib.c', 'src/util.c'],
  include_directories : inc,
)

# Executable
executable('myapp',
  sources : ['src/main.c'],
  include_directories : inc,
  link_with : mylib,
  dependencies : [glib_dep, threads_dep],
  install : true,
)

# Tests
test('basic', executable('test_basic',
  sources : ['tests/test_basic.c'],
  link_with : mylib,
))
```

### 4. Dependency management with wrap

```bash
# Search for a wrap
meson wrap search zlib

# Install a wrap (downloads .wrap file from wrapdb)
meson wrap install zlib
meson wrap install gtest

# List installed wraps
meson wrap list

# Update all wraps
meson wrap update
```

In `meson.build`:

```python
# Use wrap as fallback if system lib not found
zlib_dep = dependency('zlib',
  fallback : ['zlib', 'zlib_dep'],  # [wrap_name, dep_variable]
)

# Force wrap (for reproducible builds)
zlib_dep = dependency('zlib',
  fallback : ['zlib', 'zlib_dep'],
  default_options : ['default_library=static'],
)
```

`subprojects/zlib.wrap` structure:

```ini
[wrap-file]
directory = zlib-1.3
source_url = https://zlib.net/zlib-1.3.tar.gz
source_hash = <sha256>

[provide]
zlib = zlib_dep
```

### 5. Build options

Define in `meson_options.txt` (or `meson.options` in Meson ≥1.1):

```python
option('with_tests', type : 'boolean', value : true,
  description : 'Build unit tests')

option('backend', type : 'combo',
  choices : ['opengl', 'vulkan', 'software'],
  value : 'opengl',
  description : 'Rendering backend')

option('max_connections', type : 'integer',
  min : 1, max : 1024, value : 64)
```

Use in `meson.build`:

```python
if get_option('with_tests')
  subdir('tests')
endif
```

### 6. Cross-compilation

Create a cross file (`cross/arm-linux.ini`):

```ini
[binaries]
c = 'arm-linux-gnueabihf-gcc'
cpp = 'arm-linux-gnueabihf-g++'
ar = 'arm-linux-gnueabihf-ar'
strip = 'arm-linux-gnueabihf-strip'
pkgconfig = 'arm-linux-gnueabihf-pkg-config'

[properties]
sys_root = '/path/to/sysroot'

[host_machine]
system = 'linux'
cpu_family = 'arm'
cpu = 'cortex-a9'
endian = 'little'
```

```bash
meson setup builddir-arm --cross-file cross/arm-linux.ini
meson compile -C builddir-arm
```

### 7. CMake migration cheatsheet

| CMake | Meson equivalent |
|-------|-----------------|
| `add_executable` | `executable()` |
| `add_library` | `library()` / `static_library()` / `shared_library()` |
| `target_include_directories` | `include_directories` arg in target |
| `target_link_libraries` | `dependencies` / `link_with` |
| `find_package` | `dependency()` |
| `option()` | `option()` in `meson_options.txt` |
| `add_subdirectory` | `subdir()` |
| `install(TARGETS ...)` | `install : true` in target |

For wrap patterns and subproject configuration, see [references/meson-wrap.md](references/meson-wrap.md).

## Related skills

- Use `skills/build-systems/cmake` when CMake is required or preferred
- Use `skills/build-systems/ninja` — Meson uses Ninja as its backend
- Use `skills/compilers/cross-gcc` for cross-compiler toolchain setup
- Use `skills/compilers/gcc` or `skills/compilers/clang` for compiler flag context

© mohitmishra786 · MIT · mohitmishra786/low-level-dev-skills

Похожие скиллы

Все скиллы по теме «Языки программирования» →
ue-module-build-system quodsoler Скилл для работы с Build.cs, Target.cs, .uproject и .uplugin в Unreal Engine 5.8: подсказывает зависимости, экспорт-макросы и разбор ошибок сборки. CX Codex +1 1 200установок build-engineer VoltAgent Community Ускоряет сборку проекта и настраивает кэширование. Пригодится, если билд длится слишком долго или разросся монорепозиторий. 345установок cmake-vcpkg официальный github Правило задаёт Copilot контекст проекта на C++: vcpkg в режиме манифеста, настройки через CMakePresets.json и сборка под MSVC, Clang и GCC. ★ 40 418звёзд репо modernization-workflow официальный EMEA App GBB Визуализирует шаги GitHub Copilot Modernize CLI для репозиториев на .NET, Java и C++. Помогает вести проект через этапы Assess, Plan и Execute. ★ 40 418звёзд репо memory-safety-patterns Seth Hobson Скилл помогает писать код на Rust, C++ и C с учётом владения памятью, RAII и управления ресурсами. Подойдёт для системного кода и поиска ошибок памяти. CX Codex 11 746установок cpp-pro https://github.com/Jeffallan Пишет, оптимизирует и отлаживает C++ с concepts, ranges, корутинами, SIMD и шаблонной метапрограммированием. Пригодится для проектов на C++20/23, где нужна производительность и чёткая типизация. CX Codex +1 5 300установок

Из того же набора62

dynamic-linking Скилл для работы с динамической линковкой в Linux: разбирает ошибки загрузки .so, настройку RPATH и RUNPATH, версионирование soname. CX Codex +1 600установок rust-profiling Скилл для анализа производительности Rust: флеймграфы, размер бинарника, раздувание мономорфизации и микробенчмарки Criterion. CX Codex +1 586установок interpreters Подсказывает агенту, как устроить диспетчеризацию байткода, стековую или регистровую ВМ и простой JIT через mmap. CX Codex +1 564установок rust-ffi Ведёт агента по FFI между Rust и C: генерация биндингов через bindgen и cbindgen, безопасные обёртки, линковка системных библиотек. CX Codex +1 563установок cargo-workflows Скилл ведёт агента по воркспейсам Cargo, фичам, build.rs, кэшу сборки и аудиту зависимостей. Пригодится, когда Rust-проект разрастается до нескольких крейтов. CX Codex +1 558установок cpp-modules Скилл для работы с модулями C++20: именованные модули, партиции, header units, сборка через CMake и флаги компиляторов. CX Codex +1 555установок rust-security Скилл для проверки Rust-проектов на уязвимости: cargo-audit, cargo-deny, RUSTSEC, безопасный FFI, фаззинг и Miri. CX Codex +1 544установок debug-optimized-builds Помогает разобраться, почему GDB показывает «value optimized out» и как вообще отлаживать код, собранный с оптимизацией. CX Codex +1 533установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой