少于 1 分钟阅读 次阅读

Meson 是一个现代化的、开源的构建系统(Build System),主要用于自动化编译和构建软件项目。它的核心设计目标是:极快的构建速度极其友好的开发者体验

Meson 通常被视为传统构建工具(如 Autotools/Make)和 CMake 的现代替代品,目前在 C 和 C++ 开源社区中非常流行。许多大型重量级开源项目(如 systemd、GNOME、Mesa 3D 图形库、GStreamer 等)都已经将其构建系统迁移到了 Meson。

1. 工作原理:Meson + Ninja

Meson 本身并不直接调用编译器(如 GCC 或 Clang)去执行编译。它的角色类似于 CMake:它是一个构建文件生成器

  • 配置阶段(Meson): Meson 读取项目中的 meson.build 配置文件,并生成底层的构建脚本。
  • 构建阶段(Ninja): Meson 默认使用 Ninja 作为后端构建工具。Ninja 是一个专注于速度的小型构建系统,Meson 生成 Ninja 需要的 .ninja 文件后,由 Ninja 并发调度编译器完成真正的编译链接工作。

2. 核心优势

  • 极速构建: 搭配 Ninja 后端,Meson 的增量编译速度极快,能够最大限度地利用多核 CPU。
  • 语法简洁易读: 与 CMake 经常被诟病的晦涩语法不同,Meson 提供了一种非常接近 Python 语法的自定义领域特定语言(DSL)。这种语言是非图灵完备的,这意味着你不能在构建脚本里写复杂的无限循环,从而强制保证了构建脚本的清晰和可维护性。
  • 开箱即用的依赖管理: Meson 提供了 Wrap 依赖管理器,可以非常方便地从线上下载、编译并链接第三方依赖库。
  • 跨平台与多语言: 原生支持 Linux、Windows、macOS 等操作系统,并且支持 C、C++、Rust、Fortran、Java 等多种编程语言。

3. 直观的代码示例

Meson 的配置文件名为 meson.build。一个最简单的 C 语言项目(编译一个包含 main.c 的可执行文件)的配置代码只需要两行:

# 定义项目名称和使用的编程语言
project('my_project', 'c')

# 定义要生成的可执行文件名称,以及它的源文件
executable('my_app', 'main.c')

4. 标准使用流程

在使用 Meson 编译项目时,通常遵循以下三个标准步骤:

# 1. 配置项目,生成构建文件到 build 目录(通常与源码目录分离)
meson setup build

# 2. 进入 build 目录并使用 ninja 开始编译
cd build
ninja

# 3. (可选)安装编译好的程序到系统中
ninja install

留下评论