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 中移除。