次の方法で共有


チュートリアル: Git ベースのレジストリから依存関係をインストールする

vcpkg は、パッケージのリポジトリを管理するためにレジストリと呼ばれる概念を使用します。 既定では、vcpkg は、 https://github.com/Microsoft/vcpkgのパブリックキュレーション レジストリからライブラリを検索します。 サード パーティまたはプライベート レジストリを追加して、追加のパッケージをインストールできるようにします。

独自のレジストリの作成については、パッケージをレジストリに 発行するチュートリアルを参照してください

レジストリは、 vcpkg-configuration.json ファイルを使用して構成されます。

このチュートリアルでは、次の事項について説明します。

前提条件

  • ターミナル
  • C++ コンフィラー
  • 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

newコマンドは、マニフェスト (vcpkg.json) ファイルと構成 (vcpkg-configuration.json) ファイルの 2 つのファイルを作成します。 通常、このコマンドでは --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"
    }
  ]
}

生成された構成ファイルには、2 つのレジストリ定義が含まれています。 https://github.com/Microsoft/vcpkgでキュレーションされた vcpkg レジストリを指すdefault-registry。最新のコミットを基準として使用し追加の"artifacts" レジストリを使用します。このチュートリアルの目的は不要であり、削除できます。

3 - vcpkg 構成ファイルにプライベート レジストリを追加する

ソース コードは、vcpkg キュレーション レジストリで使用できない 2 つのライブラリを参照します。 これらの依存関係を満たすためには、 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" ]
    }
  ]
}

構成ファイルは、 beicode および beison パッケージのソースとして外部レジストリを追加します。 追加のレジストリでは、 "packages" リストを使用して、提供するパッケージを明示的に宣言する必要があります。 vcpkg がパッケージ名をレジストリに解決すると、追加のレジストリに見つからないパッケージ名は既定で "default-registry"に設定されます。 パッケージの名前解決の詳細についてはレジストリのドキュメントを参照してください。

4 - レジストリからパッケージをインストールする

構成ファイルにレジストリが追加されたら、そこからパッケージをインストールするために特別な作業を行う必要はありません。vcpkg は、通常のインストール機構に従うと、 vcpkg.json 内のパッケージ名を正しいレジストリに透過的に解決します。

vcpkg.json ファイルにbeicodebeisonの依存関係を追加します。

vcpkg add port beicode beison

プロジェクトをビルドして実行します ( $VCPKG_ROOT を vcpkg のインストール パスに置き換えます)。

cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake
cmake --build build

プログラムを実行すると、出力は次のようになります。

{
    "name": "demo"
}

次のステップ