summaryrefslogtreecommitdiffstats
path: root/Source/cmTarget.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2011-01-10 17:07:32 (GMT)
committerBrad King <brad.king@kitware.com>2011-01-10 17:07:32 (GMT)
commit57344977f563b129b0c93d9fc60d75747a89dd8b (patch)
tree29c81cc8fcefb96c2a12d5fe5451997bbbd8bc25 /Source/cmTarget.cxx
parent7ffe6d77da01674b1a67e518a83dab3b744d09b4 (diff)
downloadCMake-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.cxx21
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,