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 的未来版本中删除。