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 的未来版本中移除。