فهرست منبع

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