ホストの依存関係
ビルド時に他のポートでコードを生成したり、カスタム ビルド システムを実装したりするために使用されるツールは、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-code-generator
および contoso-build-system
(推移的な依存関係を含む) は、ビルド前にホスト トリプレット用に contoso-http-library
ビルドおよびインストールされます。
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()
ホスト専用ポート
一部のポートは、ホストの依存関係によってのみ依存する必要があります。スクリプト ポートとツール ポートが一般的な例です。 この場合は、supports 式を "native"
使用してこれを記述できます。 これは、式が false の場合 VCPKG_CROSSCOMPILING
に true をサポートします (そのことを TARGET_TRIPLET == HOST_TRIPLET
意味します)。
vcpkg
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示