CMP0095

在版本 3.16 中添加。

RPATH 条目在中间 CMake 安装脚本中被正确转义。

在 CMake 3.15 及更早版本中,通过 CMAKE_INSTALL_RPATH 或通过 INSTALL_RPATH 设置的 RPATH 条目在插入到 cmake_install.cmake 脚本之前未被转义。基于 ELF 系统的动态链接器(例如 Linux 和 FreeBSD)允许在 RPATH 条目中使用某些关键字,例如 ${ORIGIN}(更多详细信息可在这些系统上的 ld.so 手册页中找到)。这些关键字的语法可能与 CMake 的变量语法相匹配。为了不被中间 cmake_install.cmake 脚本提前替换(通常替换为空字符串),用户必须双重转义此类 RPATH 关键字,例如 set(CMAKE_INSTALL_RPATH "\\\${ORIGIN}/../lib")。由于中间 cmake_install.cmake 脚本是 CMake 的实现细节,CMake 3.16 及更高版本将确保通过转义任何偶然的 CMake 语法来按字面意义插入 RPATH 条目。

此策略的 OLD 行为是不在中间 cmake_install.cmake 脚本中转义 RPATH 条目。NEW 行为是在生成中间 cmake_install.cmake 脚本时,正确转义 RPATH 条目中偶然的 CMake 语法。

此策略在 CMake 版本 3.16 中引入。它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 在检测到类似 CMake 语法的用法时会发出警告,并使用 OLD 行为。

注意

策略的 OLD 行为按照 定义已弃用,并可能在 CMake 的未来版本中删除。