使用 wraptool

Wraptool 是 Meson 的一个子命令,允许你使用 WrapDB 数据库来管理你的源代码依赖项。它提供了你期望的所有功能,例如安装和更新依赖项。wrap 工具适用于所有平台,唯一的限制是 wrap 定义在你的目标平台上运行。如果你发现某些 Wraps 不起作用,请提交 bug 或,更重要的是,补丁。

这里的所有代码示例都假设你正在你的顶级源代码目录中运行命令。以 $ 开头的行是需要输入的命令。

简单查询

最简单的操作是查询可用包列表。要列出所有包,请执行以下命令

$ meson wrap list
box2d
enet
gtest
libjpeg
liblzma
libpng
libxml2
lua
ogg
sqlite
vorbis
zlib

通常,你希望搜索特定包。这可以通过 search 命令完成

$ meson wrap search jpeg
libjpeg

如果在 wrap 列表中找不到包,search 命令将在所有 wrap 依赖项中查找

$ meson wrap search glib-2.0
Dependency glib-2.0 found in wrap glib

要确定可安装的 libjpeg 的哪些版本,请执行 info 命令

$ meson wrap info libjpeg
Available versions of libjpeg:
  9a 2

第一个数字是上游发布版本,在本例中为 9a。第二个数字是 Wrap 修订号。它们与任何特定内容无关,但数字越大意味着版本越新。你应该始终使用最新的可用版本。

安装依赖项

安装依赖项同样简单。首先,只需在源代码树的顶部创建 subprojects 目录,并执行安装命令。

$ meson wrap install libjpeg
Installed libjpeg branch 9a revision 2

现在,你可以在你的 meson.build 文件中执行 subproject('libjpeg') 来使用它。

要检查你的项目是否是最新的,你可以执行 status 命令。

$ meson wrap status
Subproject status
 libjpeg up to date. Branch 9a, revision 2.
 zlib not up to date. Have 1.2.8 2, but 1.2.8 4 is available.

在本例中,zlib 有一个更新的版本可用。更新它很简单

$ meson wrap update zlib
Updated zlib to branch 1.2.8 revision 4

Wraptool 除了这些还可以做其他事情。这些文档可以在命令行帮助中找到,可以通过 meson wrap --help 访问。

自动依赖项回退

0.64.0 开始,Meson 可以使用 WrapDB 自动查找缺少的依赖项。

用户只需下载最新的数据库,以下命令将其存储在 subprojects/wrapdb.json 中:$ meson wrap update-db

一旦数据库在本地可用,任何在系统上找不到但在 WrapDB 中可用的依赖项都会被自动下载。

可以通过删除 subprojects/wrapdb.json 文件,或使用 --wrap-mode=nodownload 来禁用自动获取 WrapDB 子项目。

搜索结果为