CMP0095

3.16 版新增。

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

在 CMake 3.15 及更早版本中,通过 CMAKE_INSTALL_RPATHINSTALL_RPATH 设置的 RPATH 条目在被插入到 cmake_install.cmake 脚本之前没有被转义。基于 ELF 的系统(例如 Linux 和 FreeBSD)上的动态链接器允许在 RPATH 条目中使用某些关键字,例如 ${ORIGIN}(在这些系统的 ld.so man 页中有更详细的说明)。这些关键字的语法可能与 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 的未来版本中被移除。