CMP0102¶
在 3.17 版本中添加。
在不存在缓存项的情况下,mark_as_advanced()
命令将不再创建缓存项。
在 CMake 3.16 及更早版本中,如果一个变量根本没有定义,或者只是在本地定义的,mark_as_advanced()
命令会创建一个具有 UNINITIALIZED
类型且没有值的缓存项。当 find_path()
(或其他类似的 find_
命令)下次运行时,它会找到这个未定义的缓存项,并将其设置为空字符串值。此过程最终会删除本地变量(由于缓存的工作方式),从而有效地清除任何仅在本地作用域中可用的已存储 find_
结果。
此策略的 OLD
行为是创建空缓存定义。此策略的 NEW
行为是忽略缓存中尚不存在的变量。
此策略已在 CMake 版本 3.17 中引入。它可以由 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 默认不会发出警告,并使用 OLD
行为。
有关控制警告的信息,请参阅 CMAKE_POLICY_WARNING_CMP0102
变量的文档。
注意
策略的 OLD
行为根据定义已被弃用
,并可能在未来的 CMake 版本中被移除。