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
の修正が無効になります。
現在、修正ではファイルの移動方法は考慮されず、単なる修正が適用され、場合によっては間違った結果が得られます。
しくみ
/debug/<CONFIG_PATH>/*targets-debug.cmake
を/share/${PACKAGE_NAME}
に移動します。/bin/*.exe
に一致するすべての参照を Windows 上の/${TOOLS_PATH}/*.exe
に変換します。/bin/*
に一致するすべての参照を、他のプラットフォームで/${TOOLS_PATH}/*
に変換します。- 自動生成されたターゲットの
${_IMPORT_PREFIX}
を修正しました。 ${CURRENT_INSTALLED_DIR}
を構成内の${_IMPORT_PREFIX}
に置き換えます。- リリース構成とデバッグ構成の
INTERFACE_LINK_LIBRARIES
をマージします。 ${CURRENT_INSTALLED_DIR}
をターゲットの${VCPKG_IMPORT_PREFIX}
に置き換えます。/debug/<CONFIG_PATH>/*config.cmake
を削除します。
例
ソース
vcpkg