CMP0095¶
3.16 版新增。
RPATH 条目已正确转义到中间 CMake 安装脚本中。
在 CMake 3.15 及更早版本中,通过 CMAKE_INSTALL_RPATH 或 INSTALL_RPATH 设置的 RPATH 条目在插入 cmake_install.cmake 脚本之前没有进行转义。基于 ELF 的系统(例如 Linux 和 FreeBSD)上的动态链接器允许 RPATH 条目中使用某些关键字,例如 ${ORIGIN}(更多详细信息可在这些系统上的 ld.so man pages 中找到)。这些关键字的语法可能与 CMake 的变量语法匹配。为了不被中间 cmake_install.cmake 脚本(通常为空字符串)提前替换,用户必须对这些 RPATH 关键字进行双重转义,例如 set(CMAKE_INSTALL_RPATH "\\\${ORIGIN}/../lib")。由于中间 cmake_install.cmake 脚本是 CMake 的实现细节,CMake 3.16 及更高版本将确保 RPATH 条目通过转义任何巧合的 CMake 语法被字面插入。
此策略的 OLD 行为是在中间 cmake_install.cmake 脚本中不转义 RPATH 条目。 NEW 行为是在生成中间 cmake_install.cmake 脚本时,正确转义 RPATH 条目中巧合的 CMake 语法。
此策略在 CMake 版本 3.16 中引入。它可以由 cmake_policy() 或 cmake_minimum_required() 设置。如果未设置,CMake 会在检测到使用类似 CMake 的语法时发出警告,并使用 OLD 行为。
注意
策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。