install: Write the entire installation manifest at once

Avoid a separate open/close for each file installed.  Use a single
file(WRITE) instead of a loop with file(APPEND).
This commit is contained in:
Robert Goulet 2015-02-26 19:18:04 +00:00 committed by Brad King
parent 99575c9ac1
commit c48141744e
2 changed files with 10 additions and 12 deletions

View File

@ -1907,7 +1907,10 @@ protected:
std::string Manifest;
void ManifestAppend(std::string const& file)
{
this->Manifest += ";";
if (!this->Manifest.empty())
{
this->Manifest += ";";
}
this->Manifest += file.substr(this->DestDirLength);
}

View File

@ -535,17 +535,12 @@ void cmLocalGenerator::GenerateInstallRules()
"${CMAKE_INSTALL_COMPONENT}.txt\")\n"
"else()\n"
" set(CMAKE_INSTALL_MANIFEST \"install_manifest.txt\")\n"
"endif()\n\n";
fout
<< "file(WRITE \""
<< homedir << "/${CMAKE_INSTALL_MANIFEST}\" "
<< "\"\")" << std::endl;
fout
<< "foreach(file ${CMAKE_INSTALL_MANIFEST_FILES})" << std::endl
<< " file(APPEND \""
<< homedir << "/${CMAKE_INSTALL_MANIFEST}\" "
<< "\"${file}\\n\")" << std::endl
<< "endforeach()" << std::endl;
"endif()\n"
"\n"
"string(REPLACE \";\" \"\\n\" CMAKE_INSTALL_MANIFEST_CONTENT\n"
" \"${CMAKE_INSTALL_MANIFEST_FILES}\")\n"
"file(WRITE \"" << homedir << "/${CMAKE_INSTALL_MANIFEST}\"\n"
" \"${CMAKE_INSTALL_MANIFEST_CONTENT}\")\n";
}
}