Browse Source

Fix for bug #8969, pick a better default version for VS, and make it easier to add new versions of VS to look for.

Bill Hoffman 16 years ago
parent
commit
77dfbd49b4
1 changed files with 24 additions and 27 deletions
  1. 24 27
      Source/cmake.cxx

+ 24 - 27
Source/cmake.cxx

@@ -2029,35 +2029,31 @@ int cmake::ActualConfigure()
       this->SetGlobalGenerator(new cmGlobalBorlandMakefileGenerator);
 #elif defined(_WIN32) && !defined(__CYGWIN__) && !defined(CMAKE_BOOT_MINGW)
       std::string installedCompiler;
-      std::string mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
-        "\\VisualStudio\\8.0\\Setup;Dbghelp_path]";
-      cmSystemTools::ExpandRegistryValues(mp);
-      if (!(mp == "/registry"))
-        {
-        installedCompiler = "Visual Studio 8 2005";
-        }
-      else
+      // Try to find the newest VS installed on the computer and 
+      // use that as a default if -G is not specified
+      std::string vsregBase =
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\";
+      struct VSRegistryEntryName
+      {
+        const char* MSVersion;
+        const char* GeneratorName;
+      };
+      VSRegistryEntryName version[] = {
+        {"6.0", "Visual Studio 6"},
+        {"7.0", "Visual Studio 7"},
+        {"7.1", "Visual Stuido 7 .NET 2003"},
+        {"8.0", "Visual Studio 8 2005"},
+        {"9.0", "Visual Studio 9 2008"},
+        {"10.0", "Visual Studio 10"},
+        {0, 0}};
+      for(int i =0; version[i].MSVersion != 0; i++)
         {
-        mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
-          "\\VisualStudio\\7.1;InstallDir]";
-        cmSystemTools::ExpandRegistryValues(mp);
-        if (!(mp == "/registry"))
+        std::string reg = vsregBase + version[i].MSVersion;
+        reg += ";InstallDir]";
+        cmSystemTools::ExpandRegistryValues(reg);
+        if (!(reg == "/registry"))
           {
-          installedCompiler = "Visual Studio 7 .NET 2003";
-          }
-        else
-          {
-          mp = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft"
-            "\\VisualStudio\\7.0;InstallDir]";
-          cmSystemTools::ExpandRegistryValues(mp);
-          if (!(mp == "/registry"))
-            {
-            installedCompiler = "Visual Studio 7";
-            }
-          else
-            {
-            installedCompiler = "Visual Studio 6";
-            }
+          installedCompiler = version[i].GeneratorName;
           }
         }
       cmGlobalGenerator* gen
@@ -2067,6 +2063,7 @@ int cmake::ActualConfigure()
         gen = new cmGlobalNMakeMakefileGenerator;
         }
       this->SetGlobalGenerator(gen);
+      std::cout << "-- Building for: " << gen->GetName() << "\n";
 #else
       this->SetGlobalGenerator(new cmGlobalUnixMakefileGenerator3);
 #endif