ビルド時に他のポートでコードを生成したり、カスタム ビルド システムを実装したりするために使用されるツールは、vcpkg 内にパッケージ化できます。
Consuming
ツールとしてポートを使用する場合は、依存関係の "host" フィールドを true に設定する必要があります。 次に例を示します。
{
"name": "contoso-http-library",
"version-string": "1.0.0",
"description": "Contoso's http runtime library",
"dependencies": [
"contoso-core-library",
{
"name": "contoso-code-generator",
"host": true
},
{
"name": "contoso-build-system",
"host": true
}
]
}
この場合、contoso-http-libraryがビルドされる前に、ホスト トリプレットのcontoso-code-generatorとcontoso-build-system (推移的な依存関係を含む) がビルドされ、インストールされます。
Note
コンシューマーは、メタデータ形式としてCONTROLの代わりにvcpkg.jsonを使用する必要があります。 vcpkg format-manifest /path/to/CONTROLを使用して、既存のCONTROL ファイルを簡単に変換できます。
次に、コンシューマーのポートファイル (例ではcontoso-http-library ) 内で、CMake 変数 CURRENT_HOST_INSTALLED_DIR が installed/<host-triplet> するように定義され、必要な資産を見つけるために使用する必要があります。 この例では、 contoso-code-generator は、コンシューマーがローカル パスに追加する tools/contoso-code-generator/ccg.exe をインストールしている可能性があります。
# ports/contoso-http-library/portfile.cmake
vcpkg_add_to_path(${CURRENT_HOST_INSTALLED_DIR}/tools/contoso-code-generator)
ホストトリプレットの指定
既定のホスト トリプレットは、ホスト アーキテクチャとオペレーティング システム ( x64-windows、 x64-linux、 x64-osxなど) に基づいて選択されます。 これらは、次の方法でオーバーライドできます。
- CMake ベースのマニフェスト モードでは、最初の
project()ディレクティブの前にset(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")を呼び出します - MSBuild ベースのマニフェスト モードで、
VcpkgHostTripletプロパティを設定する - コマンド ラインで、フラグを使用する
--host-triplet=... VCPKG_DEFAULT_HOST_TRIPLET環境変数
作り
ツールの作成には特別な要件はありません。ツールは、すべての通常のポリシーとプラクティスに従って、標準ポートとして作成する必要があります。 特に、ポートファイルのコンテキスト内でHOST_TRIPLETされるのではなく、TARGET_TRIPLETに対してビルドする必要があります。
現在のコンテキストがクロスコンパイル (TARGET_TRIPLET が HOST_TRIPLETされていない) 場合、 VCPKG_CROSSCOMPILING は信頼できる値に設定されます。
if(VCPKG_CROSSCOMPILING)
# This is a native build
else()
# This is a cross build
endif()
ホスト専用ポート
一部のポートは、ホストの依存関係によってのみ依存する必要があります。スクリプト ポートとツール ポートが一般的な例です。 この場合は、 "native" サポート式を使用してこれを説明できます。 これは、 VCPKG_CROSSCOMPILING が false (その TARGET_TRIPLET == HOST_TRIPLETを意味する) 場合に式が true であることをサポートします。
VCPKG_USE_HOST_TOOLS
vcpkg によってビルドされた実行可能ファイルを CMAKE_PROGRAM_PATHに追加するには、この CMake オプションを設定します。
を選択し、ビルド プロセス中にそれらを使用できるようにします。
このオプションを有効にするには、CMakeLists.txt ファイルでproject()を呼び出す前に設定する必要があります。 VCPKG_HOST_TRIPLET変数も設定する必要があります。
ホスト トリプレットの tools フォルダー にインストールされているツールのみが CMAKE_PROGRAM_PATHに追加されます。
実質的に、次の場所が追加されます。
${VCPKG_INSTALLED_DIR}/${VCPKG_HOST_TRIPLET}/tools${VCPKG_INSTALLED_DIR}/${VCPKG_HOST_TRIPLET}/tools/*/bin
vcpkg