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

This commit is contained in:
Bill Hoffman 2009-09-14 22:16:43 -04:00
parent 899f11f919
commit 77dfbd49b4
1 changed files with 24 additions and 27 deletions

View File

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