Merge topic 'vs11-express'

7ee3cee VS11: Add VS 2012 Express support (#13348)
e17f345 VS11: Detect VS 2012 Express for default generator (#13348)
This commit is contained in:
Brad King 2012-09-19 13:57:53 -04:00 committed by CMake Topic Stage
commit fbe7b3cdfc
5 changed files with 16 additions and 9 deletions

View File

@ -143,7 +143,7 @@ Id flags: ${testflags}
set(id_toolset "") set(id_toolset "")
endif() endif()
if("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Bb][Uu][Ii][Ll][Dd]") if("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Bb][Uu][Ii][Ll][Dd]")
set(build /p:Configuration=Debug /p:Platform=@id_arch@) set(build /p:Configuration=Debug /p:Platform=@id_arch@ /p:VisualStudioVersion=${vs_version}.0)
elseif("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Dd][Ee][Vv]") elseif("${CMAKE_MAKE_PROGRAM}" MATCHES "[Mm][Ss][Dd][Ee][Vv]")
set(build /make) set(build /make)
else() else()

View File

@ -34,15 +34,14 @@ find_program(CMAKE_MAKE_PROGRAM
# if devenv is not found, then use MSBuild. # if devenv is not found, then use MSBuild.
# it is expected that if devenv is not found, then we are # it is expected that if devenv is not found, then we are
# dealing with Visual Studio Express. VCExpress has random # dealing with Visual Studio Express.
# failures when being run as a command line build tool which
# causes the compiler checks and try-compile stuff to fail. MSbuild
# is a better choice for this. However, VCExpress does not support
# cross compiling needed for Win CE.
if(NOT CMAKE_CROSSCOMPILING) if(NOT CMAKE_CROSSCOMPILING)
set(_FDIR "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VC7;FrameworkDir32]")
set(_FVER "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VC7;FrameworkVer32]")
find_program(CMAKE_MAKE_PROGRAM find_program(CMAKE_MAKE_PROGRAM
NAMES MSBuild NAMES MSBuild
HINTS HINTS
${_FDIR}/${_FVER}
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VS;ProductDir] [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0\\Setup\\VS;ProductDir]
"$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;CLR Version]/" "$ENV{SYSTEMROOT}/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;CLR Version]/"
"c:/WINDOWS/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;CLR Version]/" "c:/WINDOWS/Microsoft.NET/Framework/[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\11.0;CLR Version]/"

View File

@ -205,6 +205,8 @@ std::string cmGlobalVisualStudio10Generator
{ {
makeCommand += "Debug"; makeCommand += "Debug";
} }
makeCommand += " /p:VisualStudioVersion=";
makeCommand += this->GetIDEVersion();
if ( additionalOptions ) if ( additionalOptions )
{ {
makeCommand += " "; makeCommand += " ";

View File

@ -17,7 +17,10 @@
cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator() cmGlobalVisualStudio11Generator::cmGlobalVisualStudio11Generator()
{ {
this->FindMakeProgramFile = "CMakeVS11FindMake.cmake"; this->FindMakeProgramFile = "CMakeVS11FindMake.cmake";
this->ExpressEdition = false; // TODO: VS 11 Express support std::string vc11Express;
this->ExpressEdition = cmSystemTools::ReadRegistryValue(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VCExpress\\11.0\\Setup\\VC;"
"ProductDir", vc11Express, cmSystemTools::KeyWOW64_32);
this->PlatformToolset = "v110"; this->PlatformToolset = "v110";
} }

View File

@ -2184,6 +2184,7 @@ int cmake::ActualConfigure()
std::vector<std::string> vsVerions; std::vector<std::string> vsVerions;
vsVerions.push_back("VisualStudio\\"); vsVerions.push_back("VisualStudio\\");
vsVerions.push_back("VCExpress\\"); vsVerions.push_back("VCExpress\\");
vsVerions.push_back("WDExpress\\");
struct VSRegistryEntryName struct VSRegistryEntryName
{ {
const char* MSVersion; const char* MSVersion;
@ -2196,10 +2197,11 @@ int cmake::ActualConfigure()
{"8.0", "Visual Studio 8 2005"}, {"8.0", "Visual Studio 8 2005"},
{"9.0", "Visual Studio 9 2008"}, {"9.0", "Visual Studio 9 2008"},
{"10.0", "Visual Studio 10"}, {"10.0", "Visual Studio 10"},
{"11.0", "Visual Studio 11"},
{0, 0}}; {0, 0}};
for(size_t b=0; b < vsVerions.size() && installedCompiler.empty(); b++) for(int i=0; version[i].MSVersion != 0; i++)
{ {
for(int i =0; version[i].MSVersion != 0; i++) for(size_t b=0; b < vsVerions.size(); b++)
{ {
std::string reg = vsregBase + vsVerions[b] + version[i].MSVersion; std::string reg = vsregBase + vsVerions[b] + version[i].MSVersion;
reg += ";InstallDir]"; reg += ";InstallDir]";
@ -2208,6 +2210,7 @@ int cmake::ActualConfigure()
if (!(reg == "/registry")) if (!(reg == "/registry"))
{ {
installedCompiler = version[i].GeneratorName; installedCompiler = version[i].GeneratorName;
break;
} }
} }
} }