Forráskód Böngészése

BUG: Fix for issue #7470. Allow spaces in the path names of installed files with the NSIS CPack generator and component-based installs. Add an installed file to the CPackComponents test: it failed before the fix; now it passes.

David Cole 17 éve
szülő
commit
03c940aeb3

+ 16 - 11
Source/CPack/cmCPackNSISGenerator.cxx

@@ -793,20 +793,25 @@ CreateComponentDescription(cmCPackComponent *component,
   macrosOut << "  IntCmp $" << component->Name << "_was_installed 0 noremove_"
             << component->Name << "\n";
   std::vector<std::string>::iterator pathIt;
-  for (pathIt = component->Files.begin(); 
-       pathIt != component->Files.end(); 
-       ++pathIt) 
-    {
-    macrosOut << "  Delete \"$INSTDIR\\" 
-              << cmSystemTools::ConvertToWindowsOutputPath(pathIt->c_str())
+  std::string path;
+  for (pathIt = component->Files.begin();
+       pathIt != component->Files.end();
+       ++pathIt)
+    {
+    path = *pathIt;
+    cmSystemTools::ReplaceString(path, "/", "\\");
+    macrosOut << "  Delete \"$INSTDIR\\"
+              << path.c_str()
               << "\"\n";
     }
-  for (pathIt = component->Directories.begin(); 
-       pathIt != component->Directories.end(); 
-       ++pathIt) 
+  for (pathIt = component->Directories.begin();
+       pathIt != component->Directories.end();
+       ++pathIt)
     {
-    macrosOut << "  RMDir \"$INSTDIR\\" 
-              << cmSystemTools::ConvertToWindowsOutputPath(pathIt->c_str())
+    path = *pathIt;
+    cmSystemTools::ReplaceString(path, "/", "\\");
+    macrosOut << "  RMDir \"$INSTDIR\\"
+              << path.c_str()
               << "\"\n";
     }
   macrosOut << "  noremove_" << component->Name << ":\n";

+ 8 - 0
Tests/CPackComponents/CMakeLists.txt

@@ -39,6 +39,9 @@ install(TARGETS mylibapp
 install(FILES mylib.h
   DESTINATION include
   COMPONENT headers)
+install(FILES "Issue 7470.html"
+  DESTINATION docs
+  COMPONENT documentation)
 
 if(mylib_install_to_absolute_path)
  install(FILES mylib.cpp
@@ -77,6 +80,11 @@ cpack_add_component(applications
   DESCRIPTION "An extremely useful application that makes use of MyLib"
   GROUP Runtime
   INSTALL_TYPES Full)
+cpack_add_component(documentation
+  DISPLAY_NAME "MyLib Documentation"
+  DESCRIPTION "The extensive suite of MyLib Application documentation files"
+  GROUP Runtime
+  INSTALL_TYPES Full)
 cpack_add_component(libraries
   DISPLAY_NAME "Libraries"
   DESCRIPTION "Static libraries used to build programs with MyLib"

+ 9 - 0
Tests/CPackComponents/Issue 7470.html

@@ -0,0 +1,9 @@
+<html>
+<body>
+The install rule for this file demonstrates the problem described in<br/>
+CMake issue #7470:<br/>
+<br/>
+<a href="http://public.kitware.com/Bug/view.php?id=7470">
+http://public.kitware.com/Bug/view.php?id=7470</a><br/>
+</body>
+</html>