CMP0193¶
在 4.1 版本中新增。
GNUInstallDirs 模块在安装前缀为 / 时,会缓存带有前导 usr/ 的 CMAKE_INSTALL_* 变量。
当 CMAKE_INSTALL_PREFIX 为 / 时,对于 <dir> 等于 BINDIR、SBINDIR、LIBEXECDIR、SHAREDSTATEDIR、INCLUDEDIR、OLDINCLUDEDIR、DATAROOTDIR 和 LIBDIR 的 CMAKE_INSTALL_<dir> 变量,前面会加上 usr/ 前缀,正如在 特殊情况 中所记录的那样。在 CMake 4.0 及更早版本中,这些 CMAKE_INSTALL_<dir> 变量在缓存时没有前导 usr/,并且会在覆盖其缓存条目的普通变量中添加该前缀。CMake 4.1 及更高版本倾向于在缓存 CMAKE_INSTALL_<dir> 变量时就包含前导 usr/。因此,GNUInstallDirs_get_absolute_install_dir() 命令不再修改相对输入变量参数 <input-var>。此策略为尚未更新以适应新行为的项目提供了兼容性。
此策略的 OLD 行为是在缓存 CMAKE_INSTALL_<dir> 变量时,不包含前导 usr/。此策略的 NEW 行为是在缓存 CMAKE_INSTALL_<dir> 变量时,包含前导 usr/。
此策略是在 CMake 版本 4.1 中引入的。它可以由 cmake_policy() 或 cmake_minimum_required() 命令设置。如果未设置,CMake **不会** 警告,并使用 OLD 行为。
注意
策略的 OLD 行为 根据定义已被弃用,并可能在未来的 CMake 版本中被移除。