1CMP0102
2-------
3
4.. versionadded:: 3.17
5
6The :command:`mark_as_advanced` command no longer creates a cache entry if one
7does not already exist.
8
9In CMake 3.16 and below, if a variable was not defined at all or just defined
10locally, the :command:`mark_as_advanced` command would create a new cache
11entry with an ``UNINITIALIZED`` type and no value. When a :command:`find_path`
12(or other similar ``find_`` command) would next run, it would find this
13undefined cache entry and set it up with an empty string value. This process
14would end up deleting the local variable in the process (due to the way the
15cache works), effectively clearing any stored ``find_`` results that were only
16available in the local scope.
17
18The ``OLD`` behavior for this policy is to create the empty cache definition.
19The ``NEW`` behavior of this policy is to ignore variables which do not
20already exist in the cache.
21
22This policy was introduced in CMake version 3.17.  Use the
23:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
24Unlike many policies, CMake version |release| does *not* warn
25when this policy is not set and simply uses ``OLD`` behavior.  See
26documentation of the :variable:`CMAKE_POLICY_WARNING_CMP0102
27<CMAKE_POLICY_WARNING_CMP<NNNN>>` variable to control the warning.
28
29.. include:: DEPRECATED.txt
30