فهرست منبع

cmInstallGenerator: Move GetDestination to subclasses that need it

The method is used only for EXPORT and TARGET install destinations.
While at it, make it return a std::string by reference instead of a
"const char*".
Brad King 10 سال پیش
والد
کامیت
f99991db88

+ 4 - 4
Source/cmExportInstallFileGenerator.cxx

@@ -73,8 +73,8 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
   // to reference if they are relative to the install prefix.
   std::string installPrefix =
     this->IEGen->GetMakefile()->GetSafeDefinition("CMAKE_INSTALL_PREFIX");
-  const char* installDest = this->IEGen->GetDestination();
-  if(cmSystemTools::FileIsFullPath(installDest))
+  std::string const& expDest = this->IEGen->GetDestination();
+  if(cmSystemTools::FileIsFullPath(expDest))
     {
     // The export file is being installed to an absolute path so the
     // package is not relocatable.  Use the configured install prefix.
@@ -87,7 +87,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
     {
     // Add code to compute the installation prefix relative to the
     // import file location.
-    std::string absDest = installPrefix + "/" + installDest;
+    std::string absDest = installPrefix + "/" + expDest;
     std::string absDestS = absDest + "/";
     os << "# Compute the installation prefix relative to this file.\n"
        << "get_filename_component(_IMPORT_PREFIX"
@@ -109,7 +109,7 @@ bool cmExportInstallFileGenerator::GenerateMainFile(std::ostream& os)
         "unset(_realOrig)\n"
         "unset(_realCurr)\n";
       }
-    std::string dest = installDest;
+    std::string dest = expDest;
     while(!dest.empty())
       {
       os <<

+ 3 - 0
Source/cmInstallExportGenerator.h

@@ -41,6 +41,9 @@ public:
 
   const std::string& GetNamespace() const { return this->Namespace; }
 
+  std::string const& GetDestination() const
+    { return this->Destination; }
+
 protected:
   virtual void GenerateScript(std::ostream& os);
   virtual void GenerateScriptConfigs(std::ostream& os, Indent const& indent);

+ 0 - 3
Source/cmInstallGenerator.h

@@ -50,9 +50,6 @@ public:
     Indent const& indent = Indent()
     );
 
-  const char* GetDestination() const
-    { return this->Destination.c_str(); }
-
   /** Get the install destination as it should appear in the
       installation script.  */
   std::string GetInstallDestination() const;

+ 3 - 0
Source/cmInstallTargetGenerator.h

@@ -60,6 +60,9 @@ public:
   cmTarget* GetTarget() const { return this->Target; }
   bool IsImportLibrary() const { return this->ImportLibrary; }
 
+  std::string const& GetDestination() const
+    { return this->Destination; }
+
 protected:
   virtual void GenerateScript(std::ostream& os);
   virtual void GenerateScriptForConfig(std::ostream& os,