教學課程:從 Git 型登錄安裝相依性
vcpkg 使用稱為登錄的概念來管理套件存放庫。 根據預設,vcpkg 會從 公用策劃的登錄中 https://github.com/Microsoft/vcpkg尋找連結庫。 您可以新增第三方或私人登錄,讓其他套件可供安裝。
如需建立您自己的登錄的資訊,請閱讀教學課程以 將套件發佈至登錄。
登錄是使用 檔案設定 vcpkg-configuration.json
的。
在本教學課程中,您將了解:
必要條件
- 終端機
- C++compiiler
- vcpkg
- CMake
1 - 建立專案
在新的資料夾中,建立下列項目檔:
原始程式檔 (main.cpp
):
#include <iostream>
#include <beison.h>
int main()
{
beison::Object obj;
obj.insert("name", beison::Value::string("demo"));
std::cout << beison::stringify(obj) << std::endl;
return 0;
}
CMake 項目檔 (CMakeLists.txt
):
cmake_minimum_required(VERSION 3.18)
project(demo CXX)
add_executable(main main.cpp)
find_package(beicode CONFIG REQUIRED)
find_package(beison CONFIG REQUIRED)
target_link_libraries(main PRIVATE beicode::beicode beison::beison)
2 - 建立指令清單和組態檔
執行以下命令:
vcpkg new --application
commmand 會 new
建立兩個檔案:指令清單 (vcpkg.json
) 檔案和 configuration(vcpkg-configuration.json
) 檔案。 通常,命令需要 --name
提供 和 --version
自變數,但因為本教學課程是使用者應用程式,因此我們會改用 --application
選項。
產生的檔案會有下列內容:
vcpkg.json
{}
vcpkg-configuration.json
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
}
]
}
產生的組態檔包含兩個登錄定義。 , default-registry
指向的 https://github.com/Microsoft/vcpkg,使用最新的認可作為 基準,以及額外的 "artifacts"
登錄,這是不必要的,而且可以刪除本教學課程的目的。
3 - 將私人登錄新增至 vcpkg 組態檔
原始碼會參考 vcpkg 策展登錄中無法使用的兩個連結庫。 為了滿足這些相依性,我們需要新增 https://github.com/microsoft/vcpkg-docs 為額外的登錄。
將的內容 vcpkg-configuration.json
修改為:
{
"default-registry": {
"kind": "git",
"baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
"repository": "https://github.com/microsoft/vcpkg"
},
"registries": [
{
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg-docs",
"reference": "vcpkg-registry",
"baseline": "768f6a3ad9f9b6c4c2ff390137690cf26e3c3453",
"packages": [ "beicode", "beison" ]
}
]
}
組態檔會將外部登錄新增為和 beison
套件的來源beicode
。 其他登錄必須使用清單明確宣告它們所提供的 "packages"
套件。 當 vcpkg 將套件名稱解析為登入時,其他登入中找不到的任何套件名稱都會預設為 "default-registry"
。 深入了解 登錄檔中的套件名稱解析 。
4 - 從登錄安裝套件
一旦將登錄新增至組態檔,就不需要執行任何特殊動作才能從中安裝套件。vcpkg 會在遵循一般安裝機械時,以透明方式將您 vcpkg.json
中的套件名稱解析為正確的登錄。
在您的beicode
檔案中vcpkg.json
新增 和 beison
相依性:
vcpkg add port beicode beison
建置並執行專案(以您的 vcpkg 安裝路徑取代 $VCPKG_ROOT
):
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build
執行程式,輸出看起來應該像這樣:
{
"name": "demo"
}
下一步
- 使用 版本設定鎖定您的可重複組建版本
- 使用 二進位快取跨本機或持續整合執行重複使用二進位檔
- 使用自訂 登錄管理您的私人連結庫