Jelajahi Sumber

VS: Adapt project parsers to support "ProjectGUID" without curly brackets

This is needed to correctly parse Windows Installer "wiproj" projects,
that by default contain "ProjectGUID" tags with GUID values without
surrounding curly brackets.  Otherwise CMake truncates the first & last
character from the GUID value for these projects.
Fredrik Orderud 8 tahun lalu
induk
melakukan
b3e6514c2a

+ 6 - 1
Source/cmLocalVisualStudio10Generator.cxx

@@ -17,7 +17,12 @@ public:
   virtual void CharacterDataHandler(const char* data, int length)
   {
     if (this->DoGUID) {
-      this->GUID.assign(data + 1, length - 2);
+      if (data[0] == '{') {
+        // remove surrounding curly brackets
+        this->GUID.assign(data + 1, length - 2);
+      } else {
+        this->GUID.assign(data, length);
+      }
       this->DoGUID = false;
     }
   }

+ 4 - 1
Source/cmLocalVisualStudio7Generator.cxx

@@ -2079,7 +2079,10 @@ public:
         if (strcmp(atts[i], "ProjectGUID") == 0) {
           if (atts[i + 1]) {
             this->GUID = atts[i + 1];
-            this->GUID = this->GUID.substr(1, this->GUID.size() - 2);
+            if (this->GUID[0] == '{') {
+              // remove surrounding curly brackets
+              this->GUID = this->GUID.substr(1, this->GUID.size() - 2);
+            }
           } else {
             this->GUID.clear();
           }