summaryrefslogtreecommitdiffstats
path: root/Help/policy/CMP0102.rst
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2019-12-19 13:46:50 (GMT)
committerBen Boeckel <ben.boeckel@kitware.com>2020-01-20 20:49:29 (GMT)
commit3ec82b713e51711df0c70f539aea62fc16dd3060 (patch)
tree90ce909e0cdc41e5308c83da1c03af9bbfdf1e8a /Help/policy/CMP0102.rst
parent701a5c60e059a53ebf458174253811167c1ae3fc (diff)
downloadCMake-3ec82b713e51711df0c70f539aea62fc16dd3060.zip
CMake-3ec82b713e51711df0c70f539aea62fc16dd3060.tar.gz
CMake-3ec82b713e51711df0c70f539aea62fc16dd3060.tar.bz2
cmMarkAsAdvancedCommand: ignore variables which don't exist in the cache
Fixes: #18331
Diffstat (limited to 'Help/policy/CMP0102.rst')
-rw-r--r--Help/policy/CMP0102.rst25
1 files changed, 25 insertions, 0 deletions
diff --git a/Help/policy/CMP0102.rst b/Help/policy/CMP0102.rst
new file mode 100644
index 0000000..9859006
--- /dev/null
+++ b/Help/policy/CMP0102.rst
@@ -0,0 +1,25 @@
+CMP0102
+-------
+
+The :command:`mark_as_advanced` command no longer creates a cache entry if one
+does not already exist.
+
+In CMake 3.16 and below, if a variable was not defined at all or just defined
+locally, the :command:`mark_as_advanced` command would create a new cache
+entry with an ``UNINITIALIZED`` type and no value. When a :command:`find_path`
+(or other similar ``find_`` command) would next run, it would find this
+undefined cache entry and set it up with an empty string value. This process
+would end up deleting the local variable in the process (due to the way the
+cache works), effectively clearing any stored ``find_`` results that were only
+available in the local scope.
+
+The ``OLD`` behavior for this policy is to create the empty cache definition.
+The ``NEW`` behavior of this policy is to ignore variables which do not
+already exist in the cache.
+
+This policy was introduced in CMake version 3.17. Use the
+:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
+Unlike many policies, CMake version |release| does *not* warn
+when this policy is not set and simply uses ``OLD`` behavior.
+
+.. include:: DEPRECATED.txt