ホストの依存関係

ビルド時に他のポートでコードを生成したり、カスタム ビルド システムを実装したりするために使用されるツールは、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-generatorcontoso-build-system (推移的な依存関係を含む) がビルドされ、インストールされます。

Note

コンシューマーは、メタデータ形式としてCONTROLの代わりにvcpkg.jsonを使用する必要があります。 vcpkg format-manifest /path/to/CONTROLを使用して、既存のCONTROL ファイルを簡単に変換できます。

次に、コンシューマーのポートファイル (例ではcontoso-http-library ) 内で、CMake 変数 CURRENT_HOST_INSTALLED_DIRinstalled/<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-windowsx64-linuxx64-osxなど) に基づいて選択されます。 これらは、次の方法でオーバーライドできます。

  1. CMake ベースのマニフェスト モードでは、最初の project() ディレクティブの前にset(VCPKG_HOST_TRIPLET "<triplet>" CACHE STRING "")を呼び出します
  2. MSBuild ベースのマニフェスト モードで、 VcpkgHostTriplet プロパティを設定する
  3. コマンド ラインで、フラグを使用する --host-triplet=...
  4. VCPKG_DEFAULT_HOST_TRIPLET 環境変数

作り

ツールの作成には特別な要件はありません。ツールは、すべての通常のポリシーとプラクティスに従って、標準ポートとして作成する必要があります。 特に、ポートファイルのコンテキスト内でHOST_TRIPLETされるのではなく、TARGET_TRIPLETに対してビルドする必要があります。

現在のコンテキストがクロスコンパイル (TARGET_TRIPLETHOST_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