summaryrefslogtreecommitdiffstats
path: root/Help/policy
diff options
context:
space:
mode:
authorRobert Maynard <rmaynard@nvidia.com>2024-01-05 16:58:04 (GMT)
committerRobert Maynard <rmaynard@nvidia.com>2024-01-23 13:50:38 (GMT)
commit0cfd8fe8ad01f05ba95f51c4d6ce2f8774de3f5c (patch)
tree74714e2a2374dedb5738507329872f5c5e0b3ade /Help/policy
parenteee631bb8a94a5b39c01c11671183538497824d7 (diff)
downloadCMake-0cfd8fe8ad01f05ba95f51c4d6ce2f8774de3f5c.zip
CMake-0cfd8fe8ad01f05ba95f51c4d6ce2f8774de3f5c.tar.gz
CMake-0cfd8fe8ad01f05ba95f51c4d6ce2f8774de3f5c.tar.bz2
cmTarget: Don't allow setting read-only properties
Ensure that all documented read-only target properties now produce errors when trying to set.
Diffstat (limited to 'Help/policy')
-rw-r--r--Help/policy/CMP0160.rst39
1 files changed, 39 insertions, 0 deletions
diff --git a/Help/policy/CMP0160.rst b/Help/policy/CMP0160.rst
new file mode 100644
index 0000000..46318ab
--- /dev/null
+++ b/Help/policy/CMP0160.rst
@@ -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