file(INSTALL): Do not pre-create DESTINATION for DIRECTORY

When installing a DIRECTORY, do not pre-create the DESTINATION.  The
cmFileCopier::InstallDirectory method will create the directory anyway.
Give it a chance to detect whether the directory already exists or not.
This commit is contained in:
Brad King 2014-06-23 13:52:17 -04:00
parent f0a0196250
commit f701b0b7f7
1 changed files with 13 additions and 10 deletions

View File

@ -2057,23 +2057,26 @@ bool cmFileInstaller::HandleInstallDestination()
this->DestDirLength = int(sdestdir.size());
}
if ( !cmSystemTools::FileExists(destination.c_str()) )
if(this->InstallType != cmInstallType_DIRECTORY)
{
if ( !cmSystemTools::MakeDirectory(destination.c_str()) )
if ( !cmSystemTools::FileExists(destination.c_str()) )
{
std::string errstring = "cannot create directory: " + destination +
if ( !cmSystemTools::MakeDirectory(destination.c_str()) )
{
std::string errstring = "cannot create directory: " + destination +
". Maybe need administrative privileges.";
this->FileCommand->SetError(errstring);
return false;
}
}
if ( !cmSystemTools::FileIsDirectory(destination.c_str()) )
{
std::string errstring = "INSTALL destination: " + destination +
" is not a directory.";
this->FileCommand->SetError(errstring);
return false;
}
}
if ( !cmSystemTools::FileIsDirectory(destination.c_str()) )
{
std::string errstring = "INSTALL destination: " + destination +
" is not a directory.";
this->FileCommand->SetError(errstring);
return false;
}
return true;
}