通常、vcpkg ポートは registries から取得されます。 インストールするポートのほとんどは、 https://github.com/Microsoft/vcpkgの公式 vcpkg レジストリから取得される可能性が非常に高いです。 vcpkg を使用すると、ファイル システム経由で使用可能なポートをインストールできます。これらのポートはオーバーレイ ポートと呼びます。
オーバーレイ ポートは、既存のポートのドロップイン代替として、または registryで使用できない新しいポートとして機能できます。 パッケージ名を取得するときに、オーバーレイ ポートが優先されます。
オーバーレイ ポートは、次の順序で評価されます。
--overlay-portsを使用してコマンド ラインで指定されたディレクトリ。そのディレクトリにCONTROLまたはvcpkg.jsonファイルがない場合は名前付きサブディレクトリ。vcpkg-configuration.jsonを使用してoverlay-portsファイルに指定されたディレクトリ。そのディレクトリに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
インストールするには、次のようにします。
sqlite3からのmy-ports
実行 (Run):
vcpkg install sqlite3 rapidjson curl \
--overlay-ports=my-ports/rapidjson \
--overlay-ports=vcpkg/ports/curl \
--overlay-ports=team-ports
インストールするには、次のようにします。
sqlite3からのteam-portsrapidjsonからのmy-portscurlからのvcpkg/ports
例: オーバーレイ・ポートを使用してシステム・パッケージ・マネージャーの依存関係を使用する
vcpkg の依存関係に対してシステム パッケージ マネージャーの依存関係を使用するには、 ブログの投稿を参照してください。
vcpkg