diff options
-rw-r--r-- | Source/cmGetTargetPropertyCommand.h | 11 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 10 |
2 files changed, 18 insertions, 3 deletions
diff --git a/Source/cmGetTargetPropertyCommand.h b/Source/cmGetTargetPropertyCommand.h index 06a2d17..fd89115 100644 --- a/Source/cmGetTargetPropertyCommand.h +++ b/Source/cmGetTargetPropertyCommand.h @@ -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). " diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index a5515f4..24e196a 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -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")) { |