CPack Add top level directory in component install for Archive Generators

This patch fixes bug #0012129
Signed-off-by: Eric NOULARD <eric.noulard@gmail.com>
This commit is contained in:
Daniel Nelson 2012-01-13 22:01:53 +01:00 committed by Eric NOULARD
parent 50edbf0f22
commit 3cab24a974
2 changed files with 14 additions and 2 deletions

View File

@ -57,13 +57,20 @@ int cmCPackArchiveGenerator::addOneComponentToArchive(cmArchiveWrite& archive,
std::string dir = cmSystemTools::GetCurrentWorkingDirectory();
// Change to local toplevel
cmSystemTools::ChangeDirectory(localToplevel.c_str());
std::string filePrefix;
if (this->IsOn("CPACK_INCLUDE_TOPLEVEL_DIRECTORY"))
{
filePrefix = this->GetOption("CPACK_PACKAGE_FILE_NAME");
filePrefix += "/";
}
std::vector<std::string>::const_iterator fileIt;
for (fileIt = component->Files.begin(); fileIt != component->Files.end();
++fileIt )
{
std::string rp = filePrefix + *fileIt;
cmCPackLogger(cmCPackLog::LOG_DEBUG,"Adding file: "
<< (*fileIt) << std::endl);
archive.Add(*fileIt);
<< rp << std::endl);
archive.Add(rp);
if (!archive)
{
cmCPackLogger(cmCPackLog::LOG_ERROR, "ERROR while packaging files: "

View File

@ -691,6 +691,11 @@ int cmCPackGenerator::InstallProjectViaInstallCMakeProjects(
// one install directory for each component.
tempInstallDirectory +=
GetComponentInstallDirNameSuffix(installComponent);
if (this->IsOn("CPACK_INCLUDE_TOPLEVEL_DIRECTORY"))
{
tempInstallDirectory += "/";
tempInstallDirectory += this->GetOption("CPACK_PACKAGE_FILE_NAME");
}
}
if (!setDestDir)