使用 wraptool

Wraptool 是 Meson 的一個子命令,可讓您使用 WrapDB 資料庫管理您的來源相依性。它提供了您所期望的所有功能,例如安裝和更新相依性。wrap 工具可在所有平台上運作,唯一的限制是 wrap 定義在您的目標平台上運作。如果您發現某些 Wrap 無法運作,請提交錯誤報告或更好的是提交修補程式。

此處的所有程式碼範例都假設您在最上層的原始碼目錄中執行命令。以 $ 符號開頭的行是要輸入的命令。

簡單查詢

最簡單的操作是查詢可用的套件清單。要列出所有套件,請執行以下命令

$ 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 子專案的功能。

搜尋結果如下