diff options
-rw-r--r-- | Source/cmSetTargetPropertiesCommand.h | 4 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 15 |
2 files changed, 16 insertions, 3 deletions
diff --git a/Source/cmSetTargetPropertiesCommand.h b/Source/cmSetTargetPropertiesCommand.h index 84bbf77..2cdc7de 100644 --- a/Source/cmSetTargetPropertiesCommand.h +++ b/Source/cmSetTargetPropertiesCommand.h @@ -69,7 +69,9 @@ public: "(for SHARED library targets). " "OUTPUT_NAME sets the real name of a target when it is built and " "can be used to help create two targets of the same name even though " - "CMake requires unique logical target names. " + "CMake requires unique logical target names. There is also a " + "<CONFIG>_OUTPUT_NAME that can set the output name on a " + "per-configuration basis. " "<CONFIG>_POSTFIX sets a postfix for the real name of the target " "when it is built under the configuration named by <CONFIG> " "(in upper-case, such as \"DEBUG_POSTFIX\"). The value of " diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 8290075..efa20f8 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -1199,9 +1199,20 @@ void cmTarget::GetFullNameInternal(TargetType type, outPrefix = targetPrefix?targetPrefix:""; // Append the target name or property-specified name. - if(const char* outname = this->GetProperty("OUTPUT_NAME")) + const char* outName = 0; + if(config && *config) + { + std::string configProp = cmSystemTools::UpperCase(config); + configProp += "_OUTPUT_NAME"; + outName = this->GetProperty(configProp.c_str()); + } + if(!outName) + { + outName = this->GetProperty("OUTPUT_NAME"); + } + if(outName) { - outBase = outname; + outBase = outName; } else { |