オーバーレイ ポート
通常、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
: このオーバーレイには、c
とd
の 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 の依存関係に対してシステム パッケージ マネージャーの依存関係を使用するには、 ブログの投稿を参照してください。
vcpkg