教學課程:從 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/NorthWindTraders/vcpkg-registry 為額外的登錄。

將的內容 vcpkg-configuration.json 修改為:

{
  "default-registry": {
    "kind": "git",
    "baseline": "7476f0d4e77d3333fbb249657df8251c28c4faae",
    "repository": "https://github.com/microsoft/vcpkg"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/northwindtraders/vcpkg-registry",
      "baseline": "dacf4de488094a384ca2c202b923ccc097956e0c",
      "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"
}

下一步