使用 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 子專案的功能。
搜尋結果如下