Browse Source

cmInstallGenerator: Refactor computation of absolute install dest

Replace the GetInstallDestination method, which looked up the
Destination ivar, with a new ConvertToAbsoluteDestination method that
takes the nominal destination as an argument.  Update call sites
accordingly.  This will allow some clients to transform the install
destination before calling the method.
Brad King 10 years ago
parent
commit
290ca8e2d0

+ 1 - 1
Source/cmInstallExportGenerator.cxx

@@ -199,7 +199,7 @@ void cmInstallExportGenerator::GenerateScriptActions(std::ostream& os,
 {
   // Remove old per-configuration export files if the main changes.
   std::string installedDir = "$ENV{DESTDIR}";
-  installedDir += this->GetInstallDestination();
+  installedDir += this->ConvertToAbsoluteDestination(this->Destination);
   installedDir += "/";
   std::string installedFile = installedDir;
   installedFile += this->FileName;

+ 6 - 5
Source/cmInstallGenerator.cxx

@@ -60,7 +60,7 @@ void cmInstallGenerator
     case cmInstallType_FILES:          stype = "FILE"; break;
     }
   os << indent;
-  std::string dest = this->GetInstallDestination();
+  std::string dest = this->ConvertToAbsoluteDestination(this->Destination);
   if (cmSystemTools::FileIsFullPath(dest.c_str()))
      {
      os << "list(APPEND CMAKE_ABSOLUTE_DESTINATION_FILES\n";
@@ -179,15 +179,16 @@ bool cmInstallGenerator::InstallsForConfig(const std::string& config)
 }
 
 //----------------------------------------------------------------------------
-std::string cmInstallGenerator::GetInstallDestination() const
+std::string
+cmInstallGenerator::ConvertToAbsoluteDestination(std::string const& dest) const
 {
   std::string result;
-  if(!this->Destination.empty() &&
-     !cmSystemTools::FileIsFullPath(this->Destination.c_str()))
+  if(!dest.empty() &&
+     !cmSystemTools::FileIsFullPath(dest.c_str()))
     {
     result = "${CMAKE_INSTALL_PREFIX}/";
     }
-  result += this->Destination;
+  result += dest;
   return result;
 }
 

+ 1 - 1
Source/cmInstallGenerator.h

@@ -52,7 +52,7 @@ public:
 
   /** Get the install destination as it should appear in the
       installation script.  */
-  std::string GetInstallDestination() const;
+  std::string ConvertToAbsoluteDestination(std::string const& dest) const;
 
   /** Test if this generator installs something for a given configuration.  */
   bool InstallsForConfig(const std::string& config);

+ 2 - 1
Source/cmInstallTargetGenerator.cxx

@@ -77,7 +77,8 @@ void cmInstallTargetGenerator::GenerateScriptForConfig(std::ostream& os,
     fromDirConfig = this->Target->GetDirectory(config, this->ImportLibrary);
     fromDirConfig += "/";
     }
-  std::string toDir = this->GetInstallDestination();
+  std::string toDir =
+    this->ConvertToAbsoluteDestination(this->Destination);
   toDir += "/";
 
   // Compute the list of files to install for this target.