mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-01 03:29:18 -05:00
cmTarget: Don't allow setting read-only properties
Ensure that all documented read-only target properties now produce errors when trying to set.
This commit is contained in:
@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.29
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
CMP0160: More read-only target properties now error when trying to set them. </policy/CMP0160>
|
||||
CMP0159: file(STRINGS) with REGEX updates CMAKE_MATCH_<n>. </policy/CMP0159>
|
||||
CMP0158: add_test() honors CMAKE_CROSSCOMPILING_EMULATOR only when cross-compiling. </policy/CMP0158>
|
||||
CMP0157: Swift compilation mode is selected by an abstraction. </policy/CMP0157>
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
CMP0160
|
||||
-------
|
||||
|
||||
.. versionadded:: 3.29
|
||||
|
||||
More read-only target properties now error when trying to set them.
|
||||
|
||||
The :command:`set_target_properties` and :command:`set_property` commands
|
||||
are intended to error out on all read-only properties. However, CMake 3.28 and
|
||||
below only did this for the following properties:
|
||||
|
||||
* :prop_tgt:`HEADER_SETS`
|
||||
* :prop_tgt:`INTERFACE_HEADER_SETS`
|
||||
* :prop_tgt:`IMPORTED_GLOBAL`
|
||||
* :prop_tgt:`MANUALLY_ADDED_DEPENDENCIES`
|
||||
* :prop_tgt:`NAME`
|
||||
* :prop_tgt:`TYPE`
|
||||
|
||||
This policy enforces the read-only nature of the following target properties:
|
||||
|
||||
* :prop_tgt:`ALIAS_GLOBAL`
|
||||
* :prop_tgt:`BINARY_DIR`
|
||||
* :prop_tgt:`CXX_MODULE_SETS`
|
||||
* :prop_tgt:`IMPORTED`
|
||||
* :prop_tgt:`INTERFACE_CXX_MODULE_SETS`
|
||||
* :prop_tgt:`LOCATION`
|
||||
* :prop_tgt:`LOCATION_<CONFIG>`
|
||||
* :prop_tgt:`SOURCE_DIR`
|
||||
|
||||
The ``OLD`` behavior for this policy is to only error out for the properties
|
||||
:prop_tgt:`MANUALLY_ADDED_DEPENDENCIES`, :prop_tgt:`NAME`, and :prop_tgt:`TYPE`.
|
||||
The ``NEW`` behavior for this policy is to error out on all target properties
|
||||
that are documented as read-only.
|
||||
|
||||
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.29
|
||||
.. |WARNS_OR_DOES_NOT_WARN| replace:: warns
|
||||
.. include:: STANDARD_ADVICE.txt
|
||||
|
||||
.. include:: DEPRECATED.txt
|
||||
Reference in New Issue
Block a user