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.
This commit is contained in:
parent
7ffe6d77da
commit
57344977f5
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue