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:
parent
f0a0196250
commit
f701b0b7f7
|
@ -2057,23 +2057,26 @@ bool cmFileInstaller::HandleInstallDestination()
|
||||||
this->DestDirLength = int(sdestdir.size());
|
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.";
|
". 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);
|
this->FileCommand->SetError(errstring);
|
||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue