skillZs
★ LIVE SKILL TAGS ★
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
※ REAL INSTALL DATA ※
← back to all skills
mohitmishra786/low-level-dev-skills509 installs

meson

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.

How do I install this agent skill?

npx skills add https://github.com/mohitmishra786/low-level-dev-skills --skill meson
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill acts as a comprehensive reference guide for using the Meson build system in C/C++ projects, explaining setup, compiling, dependency management, wraps, and cross-compilation with no malicious code, obfuscation, or data exfiltration detected.

  • Socketpass

    No alerts

  • Snykpass

    Risk: LOW · No issues

  • Runlayerwarn

    2/2 files flagged

What does this agent skill do?

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

# 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
--buildtypeEquivalent flags
debug (default)-O0 -g
debugoptimized-O2 -g
release-O3 -DNDEBUG
minsize-Os -DNDEBUG
plainNo flags added

2. Build and test

# 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

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

# 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:

# 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:

[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):

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:

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

6. Cross-compilation

Create a cross file (cross/arm-linux.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'
meson setup builddir-arm --cross-file cross/arm-linux.ini
meson compile -C builddir-arm

7. CMake migration cheatsheet

CMakeMeson equivalent
add_executableexecutable()
add_librarylibrary() / static_library() / shared_library()
target_include_directoriesinclude_directories arg in target
target_link_librariesdependencies / link_with
find_packagedependency()
option()option() in meson_options.txt
add_subdirectorysubdir()
install(TARGETS ...)install : true in target

For wrap patterns and subproject configuration, see 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

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/mohitmishra786/low-level-dev-skills/meson">View meson on skillZs</a>