diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 7617cca37..52574e244 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__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)(_)?\" " \ + "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)(_)?\". " - "Failure to follow this rule is not diagnosed and leaves the location " - "of the target undefined."); + CM_LOCATION_UNDEFINED_BEHAVIOR); cm->DefineProperty ("LOCATION_", 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_ property to map imported " - "configurations explicitly."); + "configurations explicitly." + CM_LOCATION_UNDEFINED_BEHAVIOR); cm->DefineProperty ("LINK_DEPENDS", cmProperty::TARGET,