概念: ポート

vcpkg のポートは、一連のファイルを生成するバージョン管理されたレシピです。 ポートを実行すると、新しいヘッダー ファイルまたはバイナリ ファイルが生成され、インストール グラフに影響します。 ポートには他のポートへの依存関係があり、特定の機能が有効になっている場合は追加の依存関係が必要になる場合があります。 これらの依存関係は、ポートのメタデータに反映されている必要があります。 少なくとも、ポートには次のものが含まれます。

  • パッケージに関するメタデータ: 名前、バージョン、サポートされている機能、依存関係など。
  • 必要に応じてパッケージを取得、ビルド、インストールする手順。

さらに、ポートには次のものが含まれる場合があります。

  • パッケージのソース コードに適用するパッチ
  • プロジェクトのビルド システムと統合する手順

Portfile (portfile.cmake)

すべてのポートには、ポート ファイル (名前付き portfile.cmakeファイル) が含まれている必要があります。 portfile は、vcpkg 環境内でパッケージをビルドしてインストールする方法に関する手順を含むスクリプトです。 ポートファイルによって実行される一般的なタスクは次のとおりです。

  • パッケージのソース コードをダウンロードします。
  • アップストリーム ビルド システムを使用してパッケージをビルドします。
  • ビルド出力を vcpkg インストール ツリーにコピーします。
  • ビルド システム統合ファイルをインストールします。

vcpkg.json

このファイルには vcpkg.json 、vcpkg ポートに含まれるパッケージに関するメタデータが記述されています。 このファイルは、パッケージの名前、バージョン、説明、依存関係、サポートされている機能やプラットフォームなどの属性を定義します。詳細については、 vcpkg.json ファイルリファレンスを参照してください。

CONTROL ファイル

警告

CONTROL ファイルは非推奨となり、下位互換性のためにのみ保持されます。

CONTROL vcpkg 内のファイルは、vcpkg がインストールできるパッケージ ("ポート") に関する詳細を指定するメタデータ ファイルとして機能します。 これらのファイルは非推奨であり、主に新しいポートのマニフェスト ファイルに vcpkg.json 置き換えられました。 ただし、下位互換性のために保持されます。 詳細については、 control-files を参照してください。

ファイルにパッチを適用する

特定のシナリオでは、ポートにパッチ ファイルが含まれる場合があります。 これらのファイルはライブラリのソース コードに変更を加えます。これは、既存の問題を修正したり、他のコンポーネントとの互換性メイン維持したりするために不可欠です。 ビルド プロセスが開始される前に、portfile によって実行される手順の一部としてパッチが適用され、シームレスでエラーのないライブラリ統合が容易になります。 詳細については、メインtainer-guide を参照してください。

ポート カテゴリ

ポート カテゴリは、メインコンテナーが vcpkg 内で異なるポートが果たす役割を明確にするために使用する口語です。 これらのカテゴリは一般的な機能を説明するのに役立ちますが、特定のポートは、その機能とユース ケースに基づいて、複数のカテゴリに属することも、まったく属していない場合もあります。

標準ポート

標準ポートは、ソースからライブラリをビルドしたり、ヘッダーのみのライブラリにヘッダー ファイルを提供したりするためのレシピとして機能します。 これには、ライブラリの取得、ビルド、インストールに必要な手順とメタデータが含まれています。 キュレーションされたレジストリ内のライブラリの大部分は標準ポートです。

メタ ポート

メタ ポートは、独自のビルド ファイルを持たずに、インストール グラフに制約を課す役割を果たします。 これらのポートは、多くの場合、関連するライブラリのセットを 1 つの名前でグループ化したり、置換可能なコンポーネントの間接レイヤーとして機能したりするために使用されます。 たとえば、依存関係管理を容易にするために、 boost さまざまな Boost ライブラリを 1 つの名前でグループ化するメタポートです。

スクリプト ポート

スクリプト ポートには、主に vcpkg 内の内部タスクまたは他のポートによる使用を目的としたユーティリティ スクリプトが含まれています。 これらのポートを使用すると、ユーティリティ スクリプトのバージョン管理が可能になり、互換性と標準化メイン。 たとえば、 vcpkg-cmake ヘルパー関数を公開する vcpkg_cmake_configure() スクリプト ポートです。

次のステップ

このドキュメントでは、vcpkg のポートの概要について説明し、その重要な要素とさまざまなカテゴリについて詳しく説明します。 より高度なトピックと詳細なガイドについては、次を参照してください。