diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 13554dde2..0c9e8f0e9 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -2721,27 +2721,34 @@ const char* cmTarget::GetLocation(const char* config) //---------------------------------------------------------------------------- const char* cmTarget::ImportedGetLocation(const char* config) { - this->Location = this->ImportedGetFullPath(config, false); - return this->Location.c_str(); + static std::string location; + location = this->ImportedGetFullPath(config, false); + return location.c_str(); } //---------------------------------------------------------------------------- const char* cmTarget::NormalGetLocation(const char* config) { + static std::string location; // Handle the configuration-specific case first. if(config) { - this->Location = this->GetFullPath(config, false); - return this->Location.c_str(); + location = this->GetFullPath(config, false); + return location.c_str(); } // Now handle the deprecated build-time configuration location. - this->Location = this->GetDirectory(); + location = this->GetDirectory(); + if(!location.empty()) + { + location += "/"; + } const char* cfgid = this->Makefile->GetDefinition("CMAKE_CFG_INTDIR"); if(cfgid && strcmp(cfgid, ".") != 0) { - this->Location += "/"; - this->Location += cfgid; + location += "/"; + location += cfgid; + location += "/"; } if(this->IsAppBundleOnApple()) @@ -2749,13 +2756,13 @@ const char* cmTarget::NormalGetLocation(const char* config) std::string macdir = this->BuildMacContentDirectory("", config, false); if(!macdir.empty()) { - this->Location += "/"; - this->Location += macdir; + location += "/"; + location += macdir; } } - this->Location += "/"; - this->Location += this->GetFullName(config, false); - return this->Location.c_str(); + location += "/"; + location += this->GetFullName(config, false); + return location.c_str(); } //---------------------------------------------------------------------------- diff --git a/Source/cmTarget.h b/Source/cmTarget.h index dd05d5b5f..41af8ab80 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -674,7 +674,6 @@ private: bool HaveInstallRule; std::string InstallPath; std::string RuntimeInstallPath; - std::string Location; std::string ExportMacro; std::set Utilities; bool RecordDependencies;