summaryrefslogtreecommitdiffstats
path: root/Source/cmake.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'Source/cmake.cxx')
-rw-r--r--Source/cmake.cxx20
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;
+ }
}
}
}