ホストの依存関係
ビルド時に他のポートでコードを生成したり、カスタム ビルド システムを実装したりするために使用されるツールは、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