次の方法で共有


オーバーレイ ポート

通常、vcpkg ポートは registries から取得されます。 インストールするポートのほとんどは、 https://github.com/Microsoft/vcpkgの公式 vcpkg レジストリから取得される可能性が非常に高いです。 vcpkg を使用すると、ファイル システム経由で使用可能なポートをインストールできます。これらのポートはオーバーレイ ポートと呼びます。

オーバーレイ ポートは、既存のポートのドロップイン代替として、または registryで使用できない新しいポートとして機能できます。 パッケージ名を取得するときに、オーバーレイ ポートが優先されます。

オーバーレイ ポートは、次の順序で評価されます。

  • --overlay-portsを使用してコマンド ラインで指定されたディレクトリ。そのディレクトリにCONTROLまたはvcpkg.json ファイルがない場合は名前付きサブディレクトリ。
  • overlay-portsを使用してvcpkg-configuration.json ファイルに指定されたディレクトリ。そのディレクトリにCONTROLまたはvcpkg.jsonファイルがない場合は名前付きサブディレクトリ。
  • 環境変数エントリ VCPKG_OVERLAY_PORTS 指定されたディレクトリ。そのディレクトリに CONTROL または vcpkg.json ファイルがない場合は、名前付きサブディレクトリ。

ポート名を解決するときに、一致するオーバーレイ ポートを含む最初の場所が選択されます。

オーバーレイ ポートの使用

オーバーレイ ポートが指定されている場合、まず vcpkg はそのディレクトリをポートとして読み込もうとします。 成功した場合、ディレクトリ自体はポートとして扱われ、オーバーレイの名前は CONTROL または vcpkg.json ファイルから派生します。 それ以外の場合は、オーバーレイ ポート名を持つサブディレクトリが考慮されます。

有効なポートには、 portfile.cmakeと、 vcpkg.json または CONTROLが含まれます。

たとえば、次のディレクトリ構造を考えてみましょう。

  • x/vcpkg.jsonの場合、 "name" フィールドは "a" に設定されます。
  • x/portfile.cmake: aの関連するビルド命令。
  • x/b/vcpkg.jsonの場合、 "name" フィールドは "b" に設定されます。
  • x/b/portfile.cmake: bの関連するビルド命令。
  • y/c/vcpkg.jsonの場合、 "name" フィールドは "c" に設定されます。
  • y/c/portfile.cmake: cの関連するビルド命令。
  • y/d/vcpkg.jsonの場合、 "name" フィールドは "d" に設定されます。
  • y/d/portfile.cmake: dの関連するビルド命令。

vcpkg では、次の設定を行うと、次のポートが考慮されます。

  • --overlay-ports=x: このオーバーレイには、 aポートが 1 つあります。 名前は vcpkg.jsonから派生します。 サブディレクトリ b は考慮されません。
  • --overlay-ports=x/b: このオーバーレイには、 bポートが 1 つあります。 名前は vcpkg.jsonから派生します。
  • --overlay-ports=y: このオーバーレイには、 cdの 2 つのポートがあります。 名前は yのサブディレクトリから派生し、 vcpkg.json で宣言された名前が一致する必要があります。vcpkg が c または dを検討するように求められた場合はエラーが生成されます。

オーバーレイ ポートの構成には、いくつかの方法で追加できます。

  • コマンド ライン: コマンド ラインに 1 つ以上の --overlay-ports=<directory> オプションを追加します。
  • マニフェスト: "overlay-ports" 配列を vcpkg-configuration.jsonに設定します。
  • 環境変数: VCPKG_OVERLAY_PORTS をパス文字区切りリストに設定します。

例: オーバーレイ ポートの例

このディレクトリ構造を考えると、

複数のオーバーレイ ポート ディレクトリを含む例

team-ports という名前のオーバーレイ ディレクトリには、sqlite3、rapidjson、curl のポートが含まれています。 my-ports という名前のオーバーレイ ディレクトリには、ポート sqlite3 と rapidjson が含まれています。 vcpkg ディレクトリには、既定のレジストリが含まれています。

実行 (Run):

vcpkg install sqlite3 --overlay-ports=my-ports --overlay-ports=team-ports

インストールするには、次のようにします。

  • my-ports からの sqlite3

実行 (Run):

vcpkg install sqlite3 rapidjson curl
    --overlay-ports=my-ports/rapidjson
    --overlay-ports=vcpkg/ports/curl
    --overlay-ports=team-ports

インストールするには、次のようにします。

  • team-ports からの sqlite3
  • my-ports からの rapidjson
  • vcpkg/ports からの curl

例: オーバーレイ・ポートを使用してシステム・パッケージ・マネージャーの依存関係を使用する

vcpkg の依存関係に対してシステム パッケージ マネージャーの依存関係を使用するには、 ブログの投稿を参照してください。