Browse Source

BUG: fix for quotes in strings for flags #4022

Bill Hoffman 18 năm trước cách đây
mục cha
commit
7a13c7affe
2 tập tin đã thay đổi với 6 bổ sung4 xóa
  1. 3 3
      Source/cmGlobalXCodeGenerator.cxx
  2. 3 1
      Source/cmXCodeObject.cxx

+ 3 - 3
Source/cmGlobalXCodeGenerator.cxx

@@ -1156,7 +1156,7 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
     {
     buildSettings->AddAttribute
       ("GCC_PREPROCESSOR_DEFINITIONS", 
-       this->CreateString("CMAKE_INTDIR=\\\\\\\"$(CONFIGURATION)\\\\\\\""));
+       this->CreateString("CMAKE_INTDIR=\\\\\"$(CONFIGURATION)\\\\\""));
     }
   std::string extraLinkOptions;
   if(target.GetType() == cmTarget::EXECUTABLE)
@@ -2565,9 +2565,9 @@ std::string cmGlobalXCodeGenerator::XCodeEscapePath(const char* p)
   if(ret.find(' ') != ret.npos)
     {
     std::string t = ret;
-    ret = "\\\"";
+    ret = "\"";
     ret += t;
-    ret += "\\\"";
+    ret += "\"";
     }
   return ret;
 }

+ 3 - 1
Source/cmXCodeObject.cxx

@@ -190,6 +190,8 @@ void cmXCodeObject::SetString(const char* s)
     this->String = "\"\"";
     return;
     }
+  // escape quotes
+  cmSystemTools::ReplaceString(ss, "\"", "\\\"");
   bool needQuote = false;
   this->String = "";
   if(ss.find_first_of(" <>.+-=") != ss.npos)
@@ -200,7 +202,7 @@ void cmXCodeObject::SetString(const char* s)
     {
     this->String = "\"";
     }
-  this->String += s;
+  this->String += ss;
   if(needQuote)
     {
     this->String += "\"";