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.
This commit is contained in:
Brad King 2015-02-11 11:48:02 -05:00
parent f99991db88
commit 290ca8e2d0
4 changed files with 10 additions and 8 deletions

View File

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

View File

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

View File

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

View File

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