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*".
This commit is contained in:
Brad King 2015-02-11 11:45:41 -05:00
parent f00829a938
commit f99991db88
4 changed files with 10 additions and 7 deletions

View File

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

View File

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

View File

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

View File

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