summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorRobert Goulet <robert.goulet@autodesk.com>2015-02-26 19:18:04 (GMT)
committerBrad King <brad.king@kitware.com>2015-02-26 20:04:07 (GMT)
commitc48141744e7b14940dc55ec98da631c4d2356dd7 (patch)
tree620ee7c35bd8e2144edba07cc4b96f0edd1277dc /Source
parent99575c9ac114e6f5d388e1ee7b9a3f788d773c9e (diff)
downloadCMake-c48141744e7b14940dc55ec98da631c4d2356dd7.zip
CMake-c48141744e7b14940dc55ec98da631c4d2356dd7.tar.gz
CMake-c48141744e7b14940dc55ec98da631c4d2356dd7.tar.bz2
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).
Diffstat (limited to 'Source')
-rw-r--r--Source/cmFileCommand.cxx5
-rw-r--r--Source/cmLocalGenerator.cxx17
2 files changed, 10 insertions, 12 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 579e715..d994659 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -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);
}
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 7ca7684..d9dcad4 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -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";
}
}