mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-08 15:19:51 -05:00
cmake: Fix default VS generator selection for Microsoft Build Tools
Some versions of the VS tools do not install the registry entry
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\$v;InstallDir
but all appear to set
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\$v\Setup\VC;ProductDir
Update our search to consider both entries.
Closes: #16360
This commit is contained in:
+13
-7
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user