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``关键字,例如``设置(CMAKE_INSTALL_RPATH "\${ORIGIN}/../lib")``。由于中间的“cmake_install.cmake”脚本是 CMake 的一个实现细节,CMake 3.16 及更高版本将通过转义任何巧合的 CMake 语法来确保按字面插入“RPATH”条目。
此策略的“旧”行为是不转义中间“cmake_install.cmake”脚本中的“RPATH”条目。 NEW 行为是在生成中间``cmake_install.cmake`` 脚本时正确地转义``RPATH`` 条目中巧合的 CMake 语法。
此策略是在 CMake 版本 3.16 中引入的。 CMake 版本 |发布|当未设置策略并检测到使用类似 CMake 的语法并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLD 或 NEW。
备注
策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。