From 638843af984281c67edcc9ea9e05712ac9075d04 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sun, 7 Oct 2012 11:01:13 +0200 Subject: [PATCH] Remove the Location member from cmTarget. It is never used. Presumably it only exists so that a const char * can be returned from GetLocation. However, that is getting in the way now, so use a static std::string instead, which is already a common pattern in cmake. --- Source/cmTarget.cxx | 31 +++++++++++++++++++------------ Source/cmTarget.h | 1 - 2 files changed, 19 insertions(+), 13 deletions(-) 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;