Merge topic 'install-export-staging-dir'
c7a319ab
install(EXPORT): Fix support for mid-length install destinations on Windows
This commit is contained in:
commit
f4cec30b53
|
@ -74,9 +74,12 @@ void cmInstallExportGenerator::ComputeTempDir()
|
|||
#else
|
||||
std::string::size_type const max_total_len = 1000;
|
||||
#endif
|
||||
if (this->TempDir.size() < max_total_len) {
|
||||
// Will generate files of the form "<temp-dir>/<base>-<config>.<ext>".
|
||||
std::string::size_type const len = this->TempDir.size() + 1 +
|
||||
this->FileName.size() + 1 + this->GetMaxConfigLength();
|
||||
if (len < max_total_len) {
|
||||
// Keep the total path length below the limit.
|
||||
std::string::size_type max_len = max_total_len - this->TempDir.size();
|
||||
std::string::size_type const max_len = max_total_len - len;
|
||||
if (this->Destination.size() > max_len) {
|
||||
useMD5 = true;
|
||||
}
|
||||
|
@ -102,6 +105,26 @@ void cmInstallExportGenerator::ComputeTempDir()
|
|||
}
|
||||
}
|
||||
|
||||
size_t cmInstallExportGenerator::GetMaxConfigLength() const
|
||||
{
|
||||
// Always use at least 8 for "noconfig".
|
||||
size_t len = 8;
|
||||
if (this->ConfigurationTypes->empty()) {
|
||||
if (this->ConfigurationName.size() > 8) {
|
||||
len = this->ConfigurationName.size();
|
||||
}
|
||||
} else {
|
||||
for (std::vector<std::string>::const_iterator ci =
|
||||
this->ConfigurationTypes->begin();
|
||||
ci != this->ConfigurationTypes->end(); ++ci) {
|
||||
if (ci->size() > len) {
|
||||
len = ci->size();
|
||||
}
|
||||
}
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
void cmInstallExportGenerator::GenerateScript(std::ostream& os)
|
||||
{
|
||||
// Skip empty sets.
|
||||
|
|
|
@ -53,6 +53,7 @@ protected:
|
|||
void GenerateImportFile(cmExportSet const* exportSet);
|
||||
void GenerateImportFile(const char* config, cmExportSet const* exportSet);
|
||||
void ComputeTempDir();
|
||||
size_t GetMaxConfigLength() const;
|
||||
|
||||
cmExportSet* ExportSet;
|
||||
std::string FilePermissions;
|
||||
|
|
Loading…
Reference in New Issue