diff options
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmake.cxx | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 78f8c48..b4ab42e 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -1467,17 +1467,23 @@ void cmake::CreateDefaultGlobalGenerator() { "8.0", "Visual Studio 8 2005" }, // { "7.1", "Visual Studio 7 .NET 2003" } }; + static const char* const vsEntries[] = { + "\\Setup\\VC;ProductDir", // + ";InstallDir" // + }; for (VSVersionedGenerator const* g = cmArrayBegin(vsGenerators); found.empty() && g != cmArrayEnd(vsGenerators); ++g) { for (const char* const* v = cmArrayBegin(vsVariants); found.empty() && v != cmArrayEnd(vsVariants); ++v) { - std::string reg = vsregBase + *v + g->MSVersion; - reg += ";InstallDir"; - std::string dir; - if (cmSystemTools::ReadRegistryValue(reg, dir, - cmSystemTools::KeyWOW64_32) && - cmSystemTools::PathExists(dir)) { - found = g->GeneratorName; + for (const char* const* e = cmArrayBegin(vsEntries); + found.empty() && e != cmArrayEnd(vsEntries); ++e) { + std::string const reg = vsregBase + *v + g->MSVersion + *e; + std::string dir; + if (cmSystemTools::ReadRegistryValue(reg, dir, + cmSystemTools::KeyWOW64_32) && + cmSystemTools::PathExists(dir)) { + found = g->GeneratorName; + } } } } |