CMP0192¶
在 4.1 版本中新增。
GNUInstallDirs
在特殊前缀中使用绝对路径的 SYSCONFDIR
、LOCALSTATEDIR
和 RUNSTATEDIR
。
GNUInstallDirs
模块文档说明了 特殊情况,涉及 SYSCONFDIR
、LOCALSTATEDIR
和 RUNSTATEDIR
。当 CMAKE_INSTALL_PREFIX
是一个特殊前缀时,例如 /usr
,这些目录的绝对路径可能在安装前缀之外,例如 /etc
、/var
和 /var/run
。
在 CMake 4.0 及以下版本中,CMAKE_INSTALL_<dir>
变量的默认值(其中 <dir>
等于 SYSCONFDIR
、LOCALSTATEDIR
和 RUNSTATEDIR
)总是使用相对路径(etc
、var
、var/run
),并且特殊情况仅在计算 CMAKE_INSTALL_FULL_<dir>
变量的绝对路径时实现。CMake 4.1 及以上版本倾向于默认将 CMAKE_INSTALL_<dir>
变量(其中 <dir>
等于 SYSCONFDIR
、LOCALSTATEDIR
和 RUNSTATEDIR
)设置为绝对路径,当 CMAKE_INSTALL_PREFIX
是一个特殊前缀时。此策略为尚未更新以适应此行为的项目提供兼容性。
此策略的 OLD
行为是将 CMAKE_INSTALL_<dir>
变量默认设置为相对路径。此策略的 NEW
行为是将 CMAKE_INSTALL_<dir>
变量默认设置为绝对路径,其中 <dir>
等于 SYSCONFDIR
、LOCALSTATEDIR
和 RUNSTATEDIR
,当 CMAKE_INSTALL_PREFIX
是一个特殊前缀时。
此策略在首次调用 include(GNUInstallDirs)
时生效。后续调用 include(GNUInstallDirs)
将重用第一次调用中缓存的 CMAKE_INSTALL_<dir>
值。
此策略在 CMake 4.1 版本中引入。它可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 将 不 发出警告,并使用 OLD
行为。
注意
策略的 OLD
行为根据定义已弃用
,并可能在 CMake 的未来版本中移除。