Meson 是专为 C/C++ 设计的现代构建系统,语法 Pythonic、简洁安全,构建 C++ 项目只需三步:安装 meson+ninja、编写 meson.build、执行 setup+build+install;支持调试、交叉编译、测试与 IDE 集成。

Meson 是一个现代、快速、易用的构建系统,专为 C、C++ 等编译型语言设计,同时天然支持 Python(其构建脚本本身就是用 Python 写的,语法也高度 Pythonic)。它比 CMake 更简洁,比 Make 更安全,比 Autotools 更现代。用 Meson 构建 C++ 项目,核心就三步:写 meson.build、配置构建目录、编译安装。
1. 安装 Meson 和 Ninja(推荐后端)
Meson 本身是 Python 包,依赖 Ninja(默认构建后端,比 make 快且并行友好):
-
Linux/macOS:
pip3 install meson ninja(建议用用户级安装:--user) -
Windows: 安装 Python 3.8+ 后运行
pip install meson ninja,确保ninja在 PATH 中 -
验证: 终端运行
meson --version和ninja --version
2. 编写 Pythonic 的 meson.build 文件
根目录下新建 meson.build,语法接近 Python:缩进有意义、用函数调用声明目标、支持变量和条件逻辑。例如一个简单 C++ 可执行程序:
project('hello-world', 'cpp', version: '0.1.0')
声明可执行文件,自动探测源码依赖
exe = executable('hello',
'src/main.cpp',
install: true
)
可选:添加依赖(如 Boost、fmt)
fmt_dep = dependency('fmt', required: false)
exe = executable('hello', 'main.cpp', dependencies: [fmt_dep])
立即学习“Python免费学习笔记(深入)”;
关键点:
-
project()必须是第一行,指定名字、语言、版本 -
executable()/library()是核心构建目标函数 - 路径是相对
meson.build所在位置的;支持 glob(如files('src/*.cpp')) - 用
dependency()声明外部库,Meson 自动处理 pkg-config、CMake Find 模块或内置查找逻辑
3. 配置与构建流程(命令行操作)
Meson 采用“源码分离构建”(out-of-tree),不污染源码目录:
-
配置构建目录:
meson setup builddir(首次运行会创建builddir并生成 Ninja 文件) -
增量重配置(改了 meson.build 后):
meson configure builddir或直接meson setup builddir(自动检测变更) -
编译:
ninja -C builddir(等价于cd builddir && ninja) -
安装(需权限):
ninja -C builddir install(按install_dir或前缀安装,默认/usr/local)
4. 实用技巧与常见场景
让 Meson 更好服务 C++ 开发:
-
启用调试信息和警告:
meson setup builddir --buildtype debug --warnlevel 3 -
跨平台交叉编译: 写
cross-file.ini,用--cross-file cross-file.ini参数 -
单元测试: 用
test()函数注册,ninja -C builddir test运行 -
自定义构建步骤(如代码生成): 用
custom_target()+run_command(),支持输入/输出依赖追踪 - IDE 支持: VS Code 安装 “Meson” 扩展;CLion 2022.3+ 原生支持 Meson 项目导入
Meson 不是“另一个 CMake”,它是用 Python 思维重构构建逻辑的结果:声明式目标、显式依赖、无隐式规则、错误提示友好。写一个中等 C++ 库,meson.build 通常不到 30 行,却能覆盖多平台、多配置、依赖管理、测试集成——真正把构建从负担变成表达。











