Browse Source

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.
Stephen Kelly 13 years ago
parent
commit
638843af98
2 changed files with 19 additions and 13 deletions
  1. 19 12
      Source/cmTarget.cxx
  2. 0 1
      Source/cmTarget.h

+ 19 - 12
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();
 }
 
 //----------------------------------------------------------------------------

+ 0 - 1
Source/cmTarget.h

@@ -674,7 +674,6 @@ private:
   bool HaveInstallRule;
   std::string InstallPath;
   std::string RuntimeInstallPath;
-  std::string Location;
   std::string ExportMacro;
   std::set<cmStdString> Utilities;
   bool RecordDependencies;