vcpkg_cmake_config_fixup
合并并更正发布和调试 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}
。 - 在 Windows 上将所有与
/bin/*.exe
匹配的引用转换为/${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
。