diff options
author | Brad King <brad.king@kitware.com> | 2011-01-10 17:07:32 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-01-10 17:07:32 (GMT) |
commit | 57344977f563b129b0c93d9fc60d75747a89dd8b (patch) | |
tree | 29c81cc8fcefb96c2a12d5fe5451997bbbd8bc25 /Source/cmTarget.cxx | |
parent | 7ffe6d77da01674b1a67e518a83dab3b744d09b4 (diff) | |
download | CMake-57344977f563b129b0c93d9fc60d75747a89dd8b.zip CMake-57344977f563b129b0c93d9fc60d75747a89dd8b.tar.gz CMake-57344977f563b129b0c93d9fc60d75747a89dd8b.tar.bz2 |
Document reading LOCATION_<CONFIG> early as undefined (#11671)
Although the LOCATION property is for compatibility with CMake 2.4, the
LOCATION_<CONFIG> property is modern. However, if a project reads it
and sets location-altering properties later the behavior is undefined.
See parent commit for details.
Diffstat (limited to 'Source/cmTarget.cxx')
-rw-r--r-- | Source/cmTarget.cxx | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 7617cca..52574e2 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -501,6 +501,15 @@ void cmTarget::DefineProperties(cmake *cm) "value is the default. " "See documentation of CMAKE_<LANG>_LINKER_PREFERENCE variables."); +#define CM_LOCATION_UNDEFINED_BEHAVIOR \ + "\n" \ + "Do not set properties that affect the location of the target after " \ + "reading this property. These include properties whose names match " \ + "\"(RUNTIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?\" " \ + "or \"(IMPLIB_)?(PREFIX|SUFFIX)\". " \ + "Failure to follow this rule is not diagnosed and leaves the location " \ + "of the target undefined." + cm->DefineProperty ("LOCATION", cmProperty::TARGET, "Read-only location of a target on disk.", @@ -520,14 +529,7 @@ void cmTarget::DefineProperties(cmake *cm) "In CMake 2.8.4 and above add_custom_command recognizes generator " "expressions to refer to target locations anywhere in the command. " "Therefore this property is not needed for creating custom commands." - "\n" - "Do not read this property until after all other properties that can " - "affect the location of the target have been set. " - "These include properties whose names match " - "\"(IMPLIB_)?(PREFIX|SUFFIX)\" or " - "\"(RUNTIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?\". " - "Failure to follow this rule is not diagnosed and leaves the location " - "of the target undefined."); + CM_LOCATION_UNDEFINED_BEHAVIOR); cm->DefineProperty ("LOCATION_<CONFIG>", cmProperty::TARGET, @@ -540,7 +542,8 @@ void cmTarget::DefineProperties(cmake *cm) "By default CMake looks for an exact-match but otherwise uses an " "arbitrary available configuration. " "Use the MAP_IMPORTED_CONFIG_<CONFIG> property to map imported " - "configurations explicitly."); + "configurations explicitly." + CM_LOCATION_UNDEFINED_BEHAVIOR); cm->DefineProperty ("LINK_DEPENDS", cmProperty::TARGET, |