summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorPeter Kuemmel <syntheticpp@gmx.net>2012-01-28 12:59:19 (GMT)
committerBrad King <brad.king@kitware.com>2012-02-01 14:04:27 (GMT)
commitde289462efc070d831bf5e49d63fb47e1de57769 (patch)
tree6f624b2813ce7adc14ac096d7580961fa54c09a2 /Source
parente2bb4dae202652487e01095e1fdbdbcb613921f8 (diff)
downloadCMake-de289462efc070d831bf5e49d63fb47e1de57769.zip
CMake-de289462efc070d831bf5e49d63fb47e1de57769.tar.gz
CMake-de289462efc070d831bf5e49d63fb47e1de57769.tar.bz2
Find VC Express during default generator selection (#12917)
CMake doesn't find Visual C++ Express and uses "NMake Makefiles" generator by default when one calls cmake WITHOUT using the -G options. Teach CMake to find VC Express to use it as the default generator just like the commercial versions.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmake.cxx23
1 files changed, 15 insertions, 8 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index d691f46..c0c73d6 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -2204,8 +2204,11 @@ int cmake::ActualConfigure()
std::string installedCompiler;
// Try to find the newest VS installed on the computer and
// use that as a default if -G is not specified
- std::string vsregBase =
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\";
+ const std::string vsregBase =
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\";
+ std::vector<std::string> vsVerions;
+ vsVerions.push_back("VisualStudio\\");
+ vsVerions.push_back("VCExpress\\");
struct VSRegistryEntryName
{
const char* MSVersion;
@@ -2219,14 +2222,18 @@ int cmake::ActualConfigure()
{"9.0", "Visual Studio 9 2008"},
{"10.0", "Visual Studio 10"},
{0, 0}};
- for(int i =0; version[i].MSVersion != 0; i++)
+ for(size_t b=0; b < vsVerions.size() && installedCompiler.empty(); b++)
{
- std::string reg = vsregBase + version[i].MSVersion;
- reg += ";InstallDir]";
- cmSystemTools::ExpandRegistryValues(reg);
- if (!(reg == "/registry"))
+ for(int i =0; version[i].MSVersion != 0; i++)
{
- installedCompiler = version[i].GeneratorName;
+ std::string reg = vsregBase + vsVerions[b] + version[i].MSVersion;
+ reg += ";InstallDir]";
+ cmSystemTools::ExpandRegistryValues(reg,
+ cmSystemTools::KeyWOW64_32);
+ if (!(reg == "/registry"))
+ {
+ installedCompiler = version[i].GeneratorName;
+ }
}
}
cmGlobalGenerator* gen