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_install.cmake 脚本时,通过转义任何偶发的 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 中移除。