教學課程:使用登錄基準安裝特定版本的 Boost 連結庫
vcpkg 提供一 Boost
組連結庫做為個別套件,方便用戶只依賴 Boost 套件的有限子集。
不過,這種方法有取捨。 需要鎖定其 Boost 相依性特定版本的使用者,才能覆寫相依每個 Boost 套件的版本。
不過,使用登錄基準和套件模式來解決此問題有一個簡單的解決方案。
- 終端機
- C++ 編譯器
- vcpkg
假設您有相依 boost-optional
的專案,而且您想要鎖定 Boost 連結庫的版本 1.80.0
。 因此,您可以建立相依性覆寫,如下所示:
vcpkg.json
{
"dependencies": [ "boost-optional" ],
"overrides": [
{ "name": "boost-optional", "version": "1.80.0" }
]
}
vcpkg-configuration.json
{
"default-registry": {
"kind": "git",
"repository": "https://github.com/Microsoft/vcpkg",
"baseline": "3265c187c74914aa5569b75355badebfdbab7987"
}
}
當您執行 vcpkg install
時,您會發現只有 的版本 boost-optional
已鎖定, 1.80.0
而其他 Boost 相依性則使用基準版本 (1.83.0
)。
Fetching registry information from https://github.com/Microsoft/vcpkg (HEAD)...
Detecting compiler hash for triplet x64-linux...
The following packages will be built and installed:
* boost-assert:x64-linux -> 1.83.0
* boost-config:x64-linux -> 1.83.0
* boost-core:x64-linux -> 1.83.0
* boost-detail:x64-linux -> 1.83.0
* boost-io:x64-linux -> 1.83.0
* boost-move:x64-linux -> 1.83.0
boost-optional:x64-linux -> 1.80.0
* boost-predef:x64-linux -> 1.83.0
* boost-preprocessor:x64-linux -> 1.83.0
* boost-static-assert:x64-linux -> 1.83.0
* boost-throw-exception:x64-linux -> 1.83.0
* boost-type-traits:x64-linux -> 1.83.0
* boost-uninstall:x64-linux -> 1.83.0
* boost-utility:x64-linux -> 1.83.0
* boost-vcpkg-helpers:x64-linux -> 1.83.0
Additional packages (*) will be modified to complete this operation.
執行下列命令,以查看已修改套件版本資料庫 boost-optional
的認可歷程記錄:
git log "--format=%H %cd %s" --date=short --left-only -- versions/b-/boost-optional.json
您應該會看到如下所示的輸出:
caa7579a1c48e2ca770f6ccf98cb03db95642631 2023-09-13 [boost] update to v1.83.0 (#33597)
5d3798ac7388ca66c169773e46103b14077b76a4 2023-06-06 [boost] Remove port version constraints (#31572)
501db0f17ef6df184fcdbfbe0f87cde2313b6ab1 2023-04-15 [boost-build] Fix SHA512 and add MSVC workaround. (#30884)
bedfdb774cfbe47da202169046ca15441a213f3e 2023-04-15 [Boost] Update Boost ports to 1.82#0 (#30856)
9484a57dd560b89f0a583be08af6753611c57fd5 2023-02-24 Update vcpkg-tool to 2023-02-16. (#29664)
6aa38234d08efefc55b70025cf6afc2212e78e15 2023-02-01 [boost] Fix generate ports to match the tree. (#29338)
6d41737729b170cb7d323a4fddd21607c9237636 2022-12-20 [boost] update to 1.81.0 (#28356)
5ba2b95aea2a39aa89444949c7a047af38c401c1 2022-10-18 [boost] Add version constraints (#26817)
8424da584e59e05956913bf96f87654aa3096c7e 2022-08-25 [boost] update to 1.80.0 (#26233)
96ec7fb25da25e0463446e552d59715a47c95e73 2022-04-21 [boost] update to 1.79.0 (#24210)
76d4836f3b1e027758044fdbdde91256b0f0955d 2022-01-10 [boost] update to 1.78.0 (#21928)
cc471dc0f59b7b2066d6172c2893419412327a7a 2021-09-27 [boost] update to 1.77.0 (#19556)
761c81d43335a5d5ccc2ec8ad90bd7e2cbba734e 2021-07-07 [boost] update to 1.76.0 (#17335)
68a74950d0400f5a803026d0860f49853984bf11 2021-01-21 [vcpkg] Rename `port_versions` to `versions` (#15784)
如您所見,會列出版本的 1.80.0
認可。 在下一個步驟中,您將使用該認可作為所有 Boost 套件的基準。
您可以改用登錄基準來鎖定版本設定,而不是新增所有相關 Boost 相依性的覆寫。 修改您的 vcpkg-configuration.json
檔案,如下所示:
vcpkg-configuration.json
{
"default-registry": {
"kind": "git",
"repository": "https://github.com/Microsoft/vcpkg",
"baseline": "3265c187c74914aa5569b75355badebfdbab7987"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/Microsoft/vcpkg",
"baseline": "8424da584e59e05956913bf96f87654aa3096c7e",
"packages": [ "boost*", "boost-*"]
}
]
}
組態檔包含兩個登錄定義。 , default-registry
指向在撰寫本文時使用最新認可的 vcpkg 策展登錄 https://github.com/Microsoft/vcpkg 。 第二個登錄也指向 vcpkg 策劃的登錄,但在先前的基準,而且僅限於符合 boost*
和 boost-*
模式的套件。
如果您執行 vcpkg install
命令,您應該注意到這次所有的 Boost 連結庫都使用 版本 1.80.0
。
Fetching registry information from https://github.com/Microsoft/vcpkg (HEAD)...
Detecting compiler hash for triplet x64-linux...
The following packages will be built and installed:
* boost-assert:x64-linux -> 1.80.0
* boost-config:x64-linux -> 1.80.0
* boost-core:x64-linux -> 1.80.0
* boost-detail:x64-linux -> 1.80.0
* boost-io:x64-linux -> 1.80.0
* boost-move:x64-linux -> 1.80.0
boost-optional:x64-linux -> 1.80.0
* boost-predef:x64-linux -> 1.80.0
* boost-preprocessor:x64-linux -> 1.80.0
* boost-static-assert:x64-linux -> 1.80.0
* boost-throw-exception:x64-linux -> 1.80.0
* boost-type-traits:x64-linux -> 1.80.0
* boost-uninstall:x64-linux -> 1.80.0
* boost-utility:x64-linux -> 1.80.0
* boost-vcpkg-helpers:x64-linux -> 1.80.0
* boost-winapi:x64-linux -> 1.80.0
Additional packages (*) will be modified to complete this operation.
相同的方法可用於其他中繼套件,例如 qt
。
以下是一些其他工作,可嘗試下一步:
- 使用指令清單檔安裝 套件
- 使用三胞胎安裝自定義平臺的 套件
- 使用 版本設定鎖定您的可重複組建版本
- 使用 二進位快取在持續整合執行之間重複使用二進位檔
- 使用 自訂登錄管理您的私人連結庫