New in version 3.17.
The 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 mark_as_advanced()
command would create a new cache entry with an UNINITIALIZED
type and no value. When a 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 cmake_policy()
command to set it to OLD
or NEW
explicitly. Unlike many policies, CMake version 3.19.0-rc3 does not warn when this policy is not set and simply uses OLD
behavior.
Note
The OLD
behavior of a policy is deprecated by definition
and may be removed in a future version of CMake.
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/policy/CMP0102.html