ENH: Added support for getting a target's location on a per-configuration basis (ex. DEBUG_LOCATION). This does not fix but helps with bug#3250.

This commit is contained in:
Brad King 2006-09-29 16:42:58 -04:00
parent 21f3a18bee
commit fdcc888c56
2 changed files with 18 additions and 3 deletions

View File

@ -58,10 +58,17 @@ public:
"will be set to \"NOTFOUND\". Use SET_TARGET_PROPERTIES to set "
"property values. Properties are usually used to control how "
"a target is built.\n"
"The read-only property \"<CONFIG>_LOCATION\" provides the full "
"path to the file on disk that will be created for the target when "
"building under configuration <CONFIG> "
"(in upper-case, such as \"DEBUG_LOCATION\"). "
"The read-only property \"LOCATION\" specifies "
"the full path to the file on disk that will be created for the "
"target. This is very useful for executable targets to get "
"the path to the executable file for use in a custom command. "
"target. The path may contain a build-system-specific portion that "
"is replaced at build time with the configuration getting built "
"(such as \"$(ConfigurationName)\" in VS). "
"This is very useful for executable targets to get "
"the path to the executable file for use in a custom command.\n"
"The read-only property \"TYPE\" returns which type the specified "
"target has (EXECUTABLE, STATIC_LIBRARY, SHARED_LIBRARY, "
"MODULE_LIBRARY, UTILITY, INSTALL_FILES or INSTALL_PROGRAMS). "

View File

@ -907,7 +907,15 @@ const char *cmTarget::GetProperty(const char* prop)
// variable in the location.
this->SetProperty("LOCATION", this->GetLocation(0));
}
// Per-configuration location can be computed.
int len = static_cast<int>(strlen(prop));
if(len > 9 && strcmp(prop+len-9, "_LOCATION") == 0)
{
std::string configName(prop, len-9);
this->SetProperty(prop, this->GetLocation(configName.c_str()));
}
// the type property returns what type the target is
if (!strcmp(prop,"TYPE"))
{