次の方法で共有


vcpkg_cmake_config_fixup

マルチ構成ジェネレーターをサポートするために、CMake のターゲットと構成をマージして修正し、CMake のターゲットとデバッグを行います。

使用方法

vcpkg_cmake_config_fixup(
    [PACKAGE_NAME <name>]
    [CONFIG_PATH <config-directory>]
    [TOOLS_PATH <tools/${PORT}>]
    [DO_NOT_DELETE_PARENT_CONFIG_PATH]
    [NO_PREFIX_CORRECTION]
)

この関数を使用するには、ヘルパー ポートの vcpkg-cmake-configに依存する必要があります。

"dependencies": [
  {
    "name": "vcpkg-cmake-config",
    "host": true
  }
]

さらに、絶対パスや不適切に配置されたバイナリなど、ターゲットに関する一般的な問題を修正します。

多くのポートでは、vcpkg_cmake_config_fixup()はそれ自体で動作します。既定PACKAGE_NAME${PORT}CONFIG_PATHは既定でshare/${PACKAGE_NAME}find_packageに渡されるパッケージ名がポート名とは異なるポートの場合は、PACKAGE_NAMEをその名前に変更する必要があります。 *config.cmake ファイルのディレクトリを設定できないポートの場合は、CONFIG_PATHを使用して、ファイルの存在するディレクトリを変更します。

既定では、 CONFIG_PATH の親ディレクトリが "cmake" という名前の場合は削除されます。 DO_NOT_DELETE_PARENT_CONFIG_PATH オプションを渡すと、複数の CMake パッケージ構成ファイルをインストールするポートに便利であるため、このような動作は無効になります。

NO_PREFIX_CORRECTION オプションを使用すると、構成ファイルの移動により vcpkg によって実行される_IMPORT_PREFIXの修正が無効になります。 現在、修正ではファイルの移動方法は考慮されず、単なる修正が適用され、場合によっては間違った結果が得られます。

しくみ

  1. /debug/<CONFIG_PATH>/*targets-debug.cmake/share/${PACKAGE_NAME}に移動します。
  2. /bin/*.exeに一致するすべての参照を Windows 上の/${TOOLS_PATH}/*.exeに変換します。
  3. /bin/*に一致するすべての参照を、他のプラットフォームで/${TOOLS_PATH}/*に変換します。
  4. 自動生成されたターゲットの ${_IMPORT_PREFIX} を修正しました。
  5. ${CURRENT_INSTALLED_DIR}を構成内の${_IMPORT_PREFIX}に置き換えます。
  6. リリース構成とデバッグ構成の INTERFACE_LINK_LIBRARIES をマージします。
  7. ${CURRENT_INSTALLED_DIR}をターゲットの${VCPKG_IMPORT_PREFIX}に置き換えます。
  8. /debug/<CONFIG_PATH>/*config.cmake を削除します。

ソース

ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.cmake