kmpkg_fixup_cmake_targets
注意
此函数已被弃用,建议改用
kmpkg_cmake_config_fixup。
合并 Release 和 Debug 版本的 CMake 目标文件(targets)与配置文件(configs),以支持多配置生成器(multiconfig generators)。 此外,还会修正目标文件的常见问题,例如绝对路径错误、二进制文件存放路径不正确等。
用法
kmpkg_fixup_cmake_targets([CONFIG_PATH <share/${PORT}>]
[TARGET_PATH <share/${PORT}>]
[TOOLS_PATH <tools/${PORT}>]
[DO_NOT_DELETE_PARENT_CONFIG_PATH])
参数
CONFIG_PATH
当前存放 *.cmake 文件的子目录路径(例如 lib/cmake/${PORT}),需为相对于 ${CURRENT_PACKAGES_DIR} 的路径。
默认值为 share/${PORT}。
TARGET_PATH
上述 *.cmake 文件需要被移动到的目标子路径,需为相对于 ${CURRENT_PACKAGES_DIR} 的路径。
若端口名称与 find_package() 查找的名称不一致,需显式指定此参数。
默认值为 share/${PORT}。
DO_NOT_DELETE_PARENT_CONFIG_PATH
默认情况下,若 CONFIG_PATH 的父目录名为 "cmake",该父目录会被删除。 传入此参数可禁用该行为,这对于安装多个 CMake 包配置文件的端口非常实用。
NO_PREFIX_CORRECTION
禁用 kmpkg 因移动目标文件而执行的 _IMPORT_PREFIX 路径修正逻辑。
目前该修正逻辑未考虑文件的实际移动方式,仅执行简单修正,在某些场景下可能导致错误结果。
TOOLS_PATH
定义工具文件的基础路径,默认值为 tools/<PORT>。
说明
该函数会执行以下核心操作:
- 处理所有
/debug/<CONFIG_PATH>/*targets-debug.cmake文件,并将其移动到/<TARGET_PATH>目录; - 删除所有
/debug/<CONFIG_PATH>/*targets.cmake和/debug/<CONFIG_PATH>/*config.cmake文件; - Windows 平台:将所有匹配
/bin/*.exe的路径引用替换为/${TOOLS_PATH}/*.exe; - 其他平台:将所有匹配
/bin/*的路径引用替换为/${TOOLS_PATH}/*; - 修正自动生成的目标文件中
${_IMPORT_PREFIX}路径,使其指向深一级的目录; - 将配置文件和目标文件中的
${CURRENT_INSTALLED_DIR}替换为${_IMPORT_PREFIX}。