瀏覽代碼

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 年之前
父節點
當前提交
b3e6514c2a
共有 2 個文件被更改,包括 10 次插入2 次删除
  1. 6 1
      Source/cmLocalVisualStudio10Generator.cxx
  2. 4 1
      Source/cmLocalVisualStudio7Generator.cxx

+ 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();
           }