CMake/Help/policy/CMP0126.rst
Brad King ad3c2c0b03 Help: Normalize and consolidate standard policy advice paragraph
Every policy's documentation has a paragraph on what version of CMake
introduced it, how to set the policy, and whether CMake warns if the
policy is not set.  The wording of this paragraph has diverged across
policies over time.  Factor the paragraph out into a standard advice
document included by every policy.
2024-01-11 14:48:01 -05:00

40 lines
1.6 KiB
ReStructuredText

CMP0126
-------
.. versionadded:: 3.21
When this policy is set to ``NEW``, the :command:`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 of ``cmake -DMYVAR:STRING=blah``.
* The ``FORCE`` or ``INTERNAL`` keywords were used when setting the cache
variable.
Note that the ``NEW`` behavior has an important difference to the similar
``NEW`` behavior of policy :policy:`CMP0077`. The :command:`set(CACHE)`
command always sets the cache variable if it did not exist previously,
regardless of the ``CMP0126`` policy setting. The :command:`option` command
will *not* set the cache variable if a non-cache variable of the same name
already exists and :policy:`CMP0077` is set to ``NEW``.
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.21
.. |WARNS_OR_DOES_NOT_WARN| replace:: does *not* warn by default
.. include:: STANDARD_ADVICE.txt
See documentation of the
:variable:`CMAKE_POLICY_WARNING_CMP0126 <CMAKE_POLICY_WARNING_CMP<NNNN>>`
variable to control the warning.
The :variable:`CMAKE_POLICY_DEFAULT_CMP0126 <CMAKE_POLICY_DEFAULT_CMP\<NNNN\>>`
variable may be used to set the policy for a third-party project in a
subdirectory without modifying it.
.. include:: DEPRECATED.txt