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.
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 <<

View File

@ -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);

View File

@ -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;

View File

@ -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,