CMP0126ΒΆ
New in version 3.21.
When this policy is set to NEW
, the set(CACHE)
command does not
remove any normal variable of the same name from the current scope.
The OLD
behavior removes any normal variable of the same name from the
current scope in the following situations:
No cache variable of that name existed previously.
A cache variable of that name existed previously, but it had no type. This can occur when the variable was set on the command line using a form like
cmake -DMYVAR=blah
instead ofcmake -DMYVAR:STRING=blah
.The
FORCE
orINTERNAL
keywords were used when setting the cache variable.
Note that the NEW
behavior has an important difference to the similar
NEW
behavior of policy CMP0077
. The set(CACHE)
command always sets the cache variable if it did not exist previously,
regardless of the CMP0126
policy setting. The option()
command
will not set the cache variable if a non-cache variable of the same name
already exists and CMP0077
is set to NEW
.
Policy CMP0126
was introduced in CMake version 3.21. Use the
cmake_policy()
command to set it to OLD
or NEW
explicitly
within a project. Use the CMAKE_POLICY_DEFAULT_CMP0126
variable to set the policy for
a third-party project in a subdirectory without modifying it.
Unlike many policies, CMake version 3.27.9 does not warn when the policy
is not set and simply uses OLD
behavior. See documentation of the
CMAKE_POLICY_WARNING_CMP0126
variable to control the warning.
Note
The OLD
behavior of a policy is
deprecated by definition
and may be removed in a future version of CMake.