Meson+Ninja构建C++项目更快更简洁:Meson声明式描述逻辑,Ninja极速执行,编译速度比CMake+Make快2–3倍,配置代码减少约40%。
用 Meson + Ninja 构建 C++ 项目,确实比传统 Makefile 或 CMake 更快、更简洁。核心在于:Meson 负责声明式描述构建逻辑(易读易维护),Ninja 负责极速执行(依赖精准、并行高效)。两者组合,编译速度常比 CMake+Make 快 2–3 倍,且配置代码量减少约 40%。
Meson 是 Python 工具,Ninja 是独立二进制,均推荐用系统包管理器安装:
brew install meson ninja
sudo apt install meson ninja-build
pip install meson + 下载 Ninja 官方 Windows 二进制并加入 PATH项目目录建议这样组织:
myapp/
├── meson.build # Meson 入口文件(必需)
├── src/
│ ├── main.cpp
│ └── utils.cpp
└── include/
└── utils.hpp
不用写规则、不操心编译器标志顺序——Meson 自动处理跨平台细节。下面是一个典型 C++17 可执行程序配置:
立即学习“C++免费学习笔记(深入)”;
project('myapp', 'cpp', version: '0.1.0', default_options: ['cpp_std=gnu++17'])
声明可执行目标
exe = executable(
'myapp',
sources: [
'src/main.cpp',
'src/utils.cpp'
],
include_directories: include_directories('include'),
dependencies: dependency('threads'), # 自动找 pthread 或 Windows 线程库
)
可选:加单元测试
test('basic', exe, args: ['--test'])
关键点:
project() 第一次调用即定义整个项目,自动检测编译器和基础工具链include_directories() 支持相对路径,Meson 会自动转为 -I 参数dependency() 声明,Meson 在 pkg-config、CMake、系统路径中自动查找完全跳过 configure/make 的繁琐步骤,直接:
# 1. 生成 Ninja 构建文件(只运行一次,或修改 meson.build 后重做) meson setup builddir2. 编译(支持增量、并行、静默)
ninja -C builddir
3. 运行(路径固定,无需 cd)
./builddir/myapp
Ninja 默认启用所有 CPU 核心并行,且只重新编译被修改或依赖变更的文件。首次构建后,改一个 .cpp 文件,通常 1 秒内完成重编。
实际项目中,这些写法能显著提升可维护性
:
get_option('build_tests') 配合 meson configure -Dbuild_tests=true builddir
subprojects/ 放第三方库(如 fmt、catch2),Meson 自动识别 meson.build 并内联构建meson setup builddir --ide=vscode 生成配置cross-file.txt 描述目标平台,再 meson setup builddir --cross-file cross-file.txt
Meson 内置对 sanitizer、coverage、PCH、CUDA 的支持,无需手动拼接 flag —— 比如开 ASan,只需 meson setup builddir -Db_sanitize=address。