初学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 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'

参考文献

The Meson Build system

mesonbuild/meson: The Meson Build System

文章受到AI的帮助

2025-5

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐