使用 Meson
Meson 被设计为尽可能简单易用。本页概述了安装、故障排除和标准使用的初始步骤。
有关更高级的配置,请参阅命令行帮助 meson --help
或位于 Mesonbuild 网站上的 Meson 文档。
目录
需求
仅当使用 Ninja 后端时才需要 Ninja。Meson 也可以生成本地的 VS 和 Xcode 项目文件。
使用包管理器安装
Ubuntu
$ sudo apt-get install python3 python3-pip python3-setuptools \
python3-wheel ninja-build
由于我们的频繁发布周期和开发速度,发行版打包的软件可能会很快过时。
使用 Python 安装
需求:pip3
获取 Mesonbuild 最新的版本。
以本地用户身份安装(推荐)
$ pip3 install --user meson
以 root 身份安装
# pip3 install meson
如果您不确定是应该以 root 身份安装还是以本地用户身份安装,请以本地用户身份安装。
从源代码安装
需求:git
Meson 可以直接从克隆的 git 存储库中运行。
$ git clone https://github.com/mesonbuild/meson.git /path/to/sourcedir
故障排除
常见问题
$ meson setup builddir
$ bash: /usr/bin/meson: No such file or directory
描述:python pip 模块安装的默认安装前缀可能未包含在您的 shell 环境 PATH
中。默认安装位置因您的操作系统、发行版和 Python 版本而异。
解决方案:可以通过更改默认 shell 环境 PATH
以包含 Pip 安装二进制文件的路径来解决此问题。例如,这可能是 /usr/local/bin
或 /home/<username>/.local/bin
。
注意:还有其他方法可以解决此问题,例如使用符号链接或将二进制文件复制到默认路径,但不推荐或不支持这些方法,因为它们可能会破坏包管理互操作性。
编译 Meson 项目
Meson 最常见的用例是在您正在使用的代码库上编译代码。要执行的步骤非常简单。
$ cd /path/to/source/root
$ meson setup builddir && cd builddir
$ meson compile
$ meson test
需要注意的唯一一点是,您需要创建一个单独的构建目录。Meson 不允许您在源代码树中构建源代码。所有构建工件都存储在构建目录中。这样,您就可以同时拥有多个具有不同配置的构建树。这样一来,生成的的文件就不会意外地添加到版本控制中。
要重新编译代码更改后的内容,只需键入 meson compile
即可。构建命令始终相同。您可以对源代码和构建系统文件进行任意更改,Meson 会检测这些更改并执行正确操作。如果要构建优化后的二进制文件,只需在运行 Meson 时使用参数 --buildtype=debugoptimized
即可。建议您为未优化的构建保留一个构建目录,为优化后的构建保留一个构建目录。要编译任何给定的配置,只需进入相应的构建目录并运行 meson compile
即可。
Meson 会自动添加编译器标志以启用调试信息和编译器警告(即 -g
和 -Wall
)。这意味着用户不必处理它们,而是可以专注于编码。
使用 Meson 作为发行版打包器
发行版打包器通常希望完全控制使用的构建标志。Meson 本机支持此用例。构建和安装 Meson 项目所需的命令如下所示。
$ cd /path/to/source/root
$ meson --prefix /usr --buildtype=plain builddir -Dc_args=... -Dcpp_args=... -Dc_link_args=... -Dcpp_link_args=...
$ meson compile -C builddir
$ meson test -C builddir
$ DESTDIR=/path/to/staging/root meson install -C builddir
命令行开关 --buildtype=plain
告诉 Meson 不要将它自己的标志添加到命令行中。这使打包器可以完全控制使用的标志。
这与其他构建系统非常相似。唯一的区别是 DESTDIR
变量作为环境变量传递,而不是作为 meson install
的参数传递。
由于发行版构建总是从头开始,因此您可能需要考虑在您的包上启用 统一构建,因为它们更快并且会生成更好的代码。但是,许多项目无法启用统一构建来构建,因此是否使用统一构建的决定必须由打包器根据具体情况进行。
搜索结果为