跳到主要内容

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>

说明

该函数会执行以下核心操作:

  1. 处理所有 /debug/<CONFIG_PATH>/*targets-debug.cmake 文件,并将其移动到 /<TARGET_PATH> 目录;
  2. 删除所有 /debug/<CONFIG_PATH>/*targets.cmake/debug/<CONFIG_PATH>/*config.cmake 文件;
  3. Windows 平台:将所有匹配 /bin/*.exe 的路径引用替换为 /${TOOLS_PATH}/*.exe
  4. 其他平台:将所有匹配 /bin/* 的路径引用替换为 /${TOOLS_PATH}/*
  5. 修正自动生成的目标文件中 ${_IMPORT_PREFIX} 路径,使其指向深一级的目录;
  6. 将配置文件和目标文件中的 ${CURRENT_INSTALLED_DIR} 替换为 ${_IMPORT_PREFIX}

源码

scripts/cmake/kmpkg_fixup_cmake_targets.cmake