三つ子
Triplet は、ターゲット環境 (CPU、OS、コンパイラ、ランタイムなど) を 1 つの便利な名前で完全にキャプチャする方法として、クロスコンパイルで使用される標準的な用語です。
vcpkg では、トリプレットはすべてのライブラリの架空の "ターゲット構成セット" を記述します。 トリプレット内では、ライブラリは通常、同じ構成で構築されますが、必須ではありません。 たとえば、静的およびzlib
動的にopenssl
ビルドする 1 つのトリプレット、静的にビルドするトリプレット、および動的にビルドするトリプレット (すべて同じターゲット OS とアーキテクチャ用) を使用できます。
1 つのビルドでは、最大 2 つのトリプレット (ターゲット トリプレットとホスト トリプレット) のファイルが使用されます。 異なるライブラリに異なる設定を適用する必要がある場合は、その設定の組み合わせで 1 つのカスタム トリプレットを作成する必要があります。 これを行う方法については、 ポートごとのカスタマイズ を参照してください。
vcpkg には、多くの一般的なプラットフォームと構成用の定義済みのトリプレットが付属しています。 vcpkg help triplet
を実行して、環境内で使用可能なトリプレットの一覧を取得します。
トリプレットの選択
ターゲットトリプレットを選択するには:
- クラス モードでは:
zlib:x64-windows-static-md
など、トリプレット名でパッケージ参照を修飾します。--triplet=<triplet>
渡します。
- CMake の場合:
VCPKG_TARGET_TRIPLET
を設定します。
- MSBuild の場合:
VcpkgTriplet
を設定します。
現在のマシンのホスト トリプレットを選択するには:
- クラス モードでは:
- CMake の場合:
VCPKG_HOST_TRIPLET
を設定します。
- MSBuild の場合:
VcpkgHostTriplet
を設定します。
コミュニティトリプレット
triplets\community
フォルダーに含まれるトリプレットは、キュレーションされたレジストリの継続的インテグレーションによってテストされませんが、一般的にコミュニティから要求されます。 継続的なカバレッジがないため、ポートの更新によってコミュニティトリプレットとの互換性が損なわれる可能性があります。 私たちは、これらのトリプレットの問題を解決することを目的とした貢献を喜んで受け入れ、レビューします。
コミュニティ トリプレットを使用すると、パッケージのインストール中に次のようなメッセージが出力されます。
-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: D:\src\vcpkg\triplets\community\x86-uwp.cmake
トリプレットを追加または置換する
vcpkg を拡張するには、ボックス内のトリプレットを置き換えるか、特定のプロジェクトの新しいトリプレットを作成します。
まず、組み込みのトリプレット ファイルを triplets\
ディレクトリから別のファイルシステムの場所にコピーします。 次に、vcpkg と対話するときに、そのディレクトリをオーバーレイトリプレット パスの一覧に追加します。
- Manifest モードでは
$.vcpkg-configuration.overlay-triplets
を使用できます。 - CMake から vcpkg を使用する場合は、
VCPKG_OVERLAY_TRIPLETS
を設定できます。 - MSBuild から vcpkg を使用する場合は、MSBuild の追加オプションに
--overlay-triplets=...
を追加できます。 - CLI を直接使用する場合は、
--overlay-triplets=...
渡すことができます。 $VCPKG_OVERLAY_TRIPLETS
環境変数をオーバーレイ パスの一覧に設定できます。
詳細なチュートリアルについては、 overlay トリプレットの例 を参照してください。
Note
トリプレット名には、小文字の英数字とハイフンのみを含めることができます。
解説
vcpkg コマンドの実行時の既定のトリプレットは %VCPKG_DEFAULT_TRIPLET%
か、その環境変数が未定義の場合はプラットフォーム固有の選択です。
- Windows:
x64-windows
- Linux:
x64-linux
- OSX:
x64-osx
新しいトリプレットを作成するときは、体系的な名前付けスキームを使用することをお勧めします。 Android ツールチェーンの名前付けスキームは、インスピレーションの良いソースです: https://developer.android.com/ndk/guides/standalone_toolchain.html。
vcpkg