バイナリ キャッシュ
vcpkg パブリック レジストリのほとんどのポートはソースからビルドされます。 ソースからビルドすることで、vcpkg は、プロジェクトで依存関係をビルドするために使用するのと同じ環境、ビルド ツール、コンパイラ フラグ、リンカー フラグ、およびその他の構成を使用して、最大限の互換性を確保できます。
バイナリ キャッシュを有効にすると、各パッケージがソースからビルドされた後、vcpkg によって binary パッケージが作成されます。 バイナリ パッケージには、バイナリ、ビルド システム統合ファイル、使用ドキュメント、ライセンス、およびその他のファイルというパッケージのビルド出力が保持されます。 後でキャッシュされたパッケージをインストールする必要がある場合、vcpkg は、キャッシュされたバイナリ パッケージを復元するか、ソースからビルドをトリガーするかを決定します。
これにより、バイナリ キャッシュによって、ソースからのビルドの次の欠点の影響が軽減されます。
- 重複した作業: ソースからパッケージをビルドする必要がある回数を減らすことで。
- 長いビルド時間: バイナリ パッケージの復元は、通常、完了までに数秒かかる非常に高速な操作です。
バイナリ キャッシュは、エフェメラル コンテナーまたはビルド エージェントが毎回 vcpkg を強制的にクリーン スレートで動作させる CI シナリオで特に効果的です。 クラウドベースのバイナリ キャッシュ ( GitHub Packages や Azure DevOps Artifacts など) を使用すると、依存関係または構成に変更を加えた場合にのみリビルドが行われるので、実行間でバイナリ パッケージを保持して最大限の速度を確保できます。
ヒント
すべての継続的インテグレーション パイプラインまたはワークフローの読み取りおよび書き込みアクセス許可を持つバイナリ キャッシュを作成することをお勧めします。 個々の開発者は、CI で生成されたバイナリ キャッシュへの読み取り専用アクセス権を持っている必要があります。
バイナリ キャッシュは、さまざまな環境でホストできます。 バイナリ キャッシュの最も基本的な形式は、ローカル コンピューター上のフォルダーまたはネットワーク ファイル共有です。 キャッシュは、任意の NuGet フィード (GitHub パッケージや Azure DevOps Artifacts など)、Azure Blob Storage、Google Cloud Storage、およびその他の多くのサービスに格納することもできます。
CI プロバイダーがネイティブの "キャッシュ" 関数を提供する場合は、最もパフォーマンスの高い結果を得るために vcpkg バイナリ キャッシュとネイティブ メソッドの両方を使用することをお勧めします。
開発用のバイナリ キャッシュの再利用
バイナリ分散メカニズムとしてはお勧めしませんが、バイナリ キャッシュを使用して、複数のシステムからのビルド出力を再利用できます。 たとえば、開発者は、ローカル コンピューターで CI 実行によって生成されたバイナリ パッケージを使用できます。 vcpkg で生成されたバイナリを再利用して統合するその他の方法については、 vcpkg export
を参照してください。
たとえば、Azure Artifacts でホストされる NuGet フィードを構成して CI パイプラインからビルドされたバイナリ パッケージを受け入れ、開発環境で再利用することができます。
Azure DevOps パイプラインに対する読み取りと書き込みのアクセス許可を し 開発チームのホストに対する読み取り専用アクセス許可を付与するように、Azure Artifacts フィードを構成する必要があります。
既定のバイナリ キャッシュ
バイナリ キャッシュは、 files
プロバイダーで既定で有効になっています 次の最初の有効な場所に配置されます。
- Windows
%VCPKG_DEFAULT_BINARY_CACHE%
%LOCALAPPDATA%\vcpkg\archives
%APPDATA%\vcpkg\archives
- Windows 以外
$VCPKG_DEFAULT_BINARY_CACHE
$XDG_CACHE_HOME/vcpkg/archives
$HOME/.cache/vcpkg/archives
ツール内ヘルプの削減は、 vcpkg help binarycaching
を介して利用できます。
バイナリ キャッシュでは、ビルドしたバイナリのみが対象となります。 ソース ファイルと事前構築済みツールをキャッシュするには、「 キャッシュを参照してください。
次のステップ
バイナリ キャッシュを設定する方法と、 構成構文のリファレンスについては、チュートリアルを参照してください。
vcpkg