浏览代码

BUG: Tweak VS8 generator to keep VS8 happy. The .vcproj files need their own GUIDs in a ProjectGUID attribute. The top level .sln file needs a special comment at the top to allow it to be opened with double-click in explorer.

Brad King 20 年之前
父节点
当前提交
d952f68738

+ 3 - 2
Source/cmGlobalVisualStudio7Generator.h

@@ -74,13 +74,14 @@ public:
    */
   std::vector<std::string> *GetConfigurations();
   
-  ///! Create a GUID
+  ///! Create a GUID or get an existing one.
   void CreateGUID(const char* name);
+  std::string GetGUID(const char* name);
 
   ///! do configure step
   virtual void Configure();
+
 protected:
-  std::string GetGUID(const char* name); 
   virtual void OutputSLNFile(cmLocalGenerator* root, 
                              std::vector<cmLocalGenerator*>& generators);
   virtual void WriteSLNFile(std::ostream& fout, cmLocalGenerator* root,

+ 1 - 0
Source/cmGlobalVisualStudio8Generator.cxx

@@ -43,6 +43,7 @@ cmLocalGenerator *cmGlobalVisualStudio8Generator::CreateLocalGenerator()
 void cmGlobalVisualStudio8Generator::WriteSLNHeader(std::ostream& fout)
 {
   fout << "Microsoft Visual Studio Solution File, Format Version 9.00\n";
+  fout << "# Visual Studio 2005\n";
 }
 
 //----------------------------------------------------------------------------

+ 8 - 2
Source/cmLocalVisualStudio7Generator.cxx

@@ -1352,8 +1352,14 @@ cmLocalVisualStudio7Generator::WriteProjectStart(std::ostream& fout,
     {
     keyword = "Win32Proj";
     }
-  fout << "\tName=\"" << projLabel << "\"\n"
-       << "\tSccProjectName=\"\"\n"
+  cmGlobalVisualStudio7Generator* gg =
+    static_cast<cmGlobalVisualStudio7Generator *>(m_GlobalGenerator);
+  fout << "\tName=\"" << projLabel << "\"\n";
+  if(m_Version == 8)
+    {
+    fout << "\tProjectGUID=\"{" << gg->GetGUID(libName) << "}\"\n";
+    }
+  fout << "\tSccProjectName=\"\"\n"
        << "\tSccLocalPath=\"\"\n"
        << "\tKeyword=\"" << keyword << "\">\n"
        << "\t<Platforms>\n"