瀏覽代碼

cmake: Simplify VS registry entry lookup

Brad King 9 年之前
父節點
當前提交
0838d20e50
共有 1 個文件被更改,包括 6 次插入4 次删除
  1. 6 4
      Source/cmake.cxx

+ 6 - 4
Source/cmake.cxx

@@ -1447,7 +1447,7 @@ void cmake::CreateDefaultGlobalGenerator()
   std::string installedCompiler;
   // Try to find the newest VS installed on the computer and
   // use that as a default if -G is not specified
-  const std::string vsregBase = "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\";
+  const std::string vsregBase = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\";
   std::vector<std::string> vsVerions;
   vsVerions.push_back("VisualStudio\\");
   vsVerions.push_back("VCExpress\\");
@@ -1472,9 +1472,11 @@ void cmake::CreateDefaultGlobalGenerator()
   for (int i = 0; version[i].MSVersion != 0; i++) {
     for (size_t b = 0; b < vsVerions.size(); b++) {
       std::string reg = vsregBase + vsVerions[b] + version[i].MSVersion;
-      reg += ";InstallDir]";
-      cmSystemTools::ExpandRegistryValues(reg, cmSystemTools::KeyWOW64_32);
-      if (!(reg == "/registry")) {
+      reg += ";InstallDir";
+      std::string dir;
+      if (cmSystemTools::ReadRegistryValue(reg, dir,
+                                           cmSystemTools::KeyWOW64_32) &&
+          cmSystemTools::PathExists(dir)) {
         installedCompiler = version[i].GeneratorName;
         break;
       }