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