diff options
author | Brad King <brad.king@kitware.com> | 2024-01-24 13:38:50 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-01-24 13:39:09 (GMT) |
commit | 73b76563fb40d88ac3b6dd7ad14e1658f3910a5e (patch) | |
tree | 5cc62631b2e5b732a062b004cdd1e80b6bacc35f /Help | |
parent | 31cdde5ce8ec30e4ad34cb53e3d92f45539ea554 (diff) | |
parent | 0cfd8fe8ad01f05ba95f51c4d6ce2f8774de3f5c (diff) | |
download | CMake-73b76563fb40d88ac3b6dd7ad14e1658f3910a5e.zip CMake-73b76563fb40d88ac3b6dd7ad14e1658f3910a5e.tar.gz CMake-73b76563fb40d88ac3b6dd7ad14e1658f3910a5e.tar.bz2 |
Merge topic 'validate_read-only_target_properties'
0cfd8fe8ad cmTarget: Don't allow setting read-only properties
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9133
Diffstat (limited to 'Help')
-rw-r--r-- | Help/manual/cmake-policies.7.rst | 1 | ||||
-rw-r--r-- | Help/policy/CMP0160.rst | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 2bb4f2f..d37c855 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -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> 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 |