meson 入门
Meson是一个现代化的开源构建系统,旨在替代CMake,支持多种编程语言和操作系统。其核心文件包括:meson.build(定义构建规则)、meson.options(配置参数)、cross-file(跨平台配置)、build.ninja(输出文件)。常用命令包括初始化构建目录、编译、安装和测试。Meson具有简单易用、快速构建、高效并行和跨平台等优势,支持ARM64EC等架构。与CMake相比
初学Meson 入门123
Meson 是一个现代化的开源构建系统于2013年,旨在取代传统的构建工具CMake。用于管理和自动化软件构建过程,它支持多种编程语言和多种操作系统。
**Meson 的基本概念**
meson.build,用于定义构建规则和依赖关系。
meson.options 用于定义项目的构建选项和配置参数。meson.options 文件可以被用来指定项目的构建行为,覆盖meson.build行为。
cross-file 用于指定跨平台构建的配置参数,例如目标平台、编译器等。这个文件可以被用来配置 Meson 的跨平台构建能力。Native-file类似?
mesonwrap 文件用于指定包装器配置参数,例如包装器类型、包装器版本等。这个文件可以被用来配置 Meson 的包装器能力【TODO】
meson-log 用于记录 Meson 的构建日志,包括构建过程、错误信息等。这个文件可以被用来调试和诊断构建问题。
build.ninja 此为输出文件,指定 Ninja 构建配置参数,例如构建规则、依赖关系等。这个文件可以被用来配置 Meson 的 Ninja 构建能力。
**Meson 的常用命令**
|
Meson 和 CMake 命令对照表 |
||
|
命令 |
Meson 1.8.0 |
CMake 4.0 |
|
初始化构建目录 |
meson setup builddir |
cmake -B build |
|
编译项目 |
meson compile |
cmake --build |
|
安装项目 |
meson install |
cmake --build . --target install |
|
清除构建目录 |
meson clean |
cmake --build . --target clean |
|
运行测试用例 |
meson test |
ctest |
**Meson 的优势**
------------------
* **简单易用**:Meson 的语法简单直观,易于学习和使用。
* **快速构建**:Meson 的构建速度比传统的构建工具快得多。
* **高效**:Meson 可以并行构建,减少构建时间。
* **跨平台**:Meson 支持多种操作系统,包括 Linux、Windows、macOS 等。
VCPKG支持
vcpkg_configure_meson(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS -Dtests=disabled
)
vcpkg_install_meson()
Freetype 和 zstd 都同时支持CMake和meson,
Fribidi,openh264等等
Meson和cmake相互转换
Meson à CMAKE: CMake module
CMAKE àMESON: meson/tools/cmake2meson.py at master · mesonbuild/meson
支持ARM64EC吗?yes
Add ARM64EC as a new conceptual cpu type of arm64 by mcfi · Pull Request #8242 · mesonbuild/meson
To support the ARM64EC build target, a new conceptual arm64 cpu type 'arm64ec' is added. The cpu can be specified in cross files like below to generate msbuild solution/vcxproj files with platform set to ARM64EC.
Cross-Compilation
官网推荐cross-file
居然有一个arm64cl.txt的文件为了windows,有点好玩
meson/cross/arm64cl.txt at master · mesonbuild/meson
自测通过的Demo cross-file
AI推荐的cross-file
内容如下:
[binaries]
c = 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostarm64/arm64/cl.exe'
cpp = 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostarm64/arm64/cl.exe'
ar = 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostarm64/arm64/lib.exe'
strip = 'C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.43.34808/bin/Hostarm64/arm64/strip.exe'
pkgconfig = 'C:/vcpkg/downloads/tools/msys2/1a29fa5108882e93/usr/bin/pkg-config.exe'
[properties]
c_args = ['-D_WIN32_WINNT=0x0601']
cpp_args = ['-D_WIN32_WINNT=0x0601']
[host_machine]
system = 'windows'
cpu_family = 'arm64ec'
cpu = 'arm64ec'
endian = 'little'
ffmpeg自动生成的Cross.meson
C:\msys64\FFmpeg-Builds-autobuild-2023-03-21-12-45\images\base-win64
Cross.meson文件
从成功案例fribidi中发现的-native-file 而不是cross-file
从everything看生成过程的log文件C:\vcpkg\buildtrees\fribidi\arm64ec-windows-rel\meson-logs\meson-log.txt
..
Build Options:…Dpkg_config_path=['"'"'C:/vcpkg/installed/arm64ec-windows/lib/pkgconfig'"'"','"'"'C:/vcpkg/installed/arm64ec-windows/share/pkgconfig'"'"']' --native-file=C:/vcpkg/buildtrees/fribidi/meson-arm64ec-windows-rel.log
Python system: Windows
从而看到了: C:\vcpkg\buildtrees\fribidi\meson-arm64ec-windows-rel.log
…
…
[build_machine]
endian = 'little'
system = 'windows'
cpu_family = 'aarch64'
cpu = 'armv8'
参考文献
mesonbuild/meson: The Meson Build System
文章受到AI的帮助
2025-5
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)