VS11: Add VS 2012 Express support (#13348)
Use the registry entries that vsvars32.bat uses to detect the location of MSBuild.exe in the framework directory. Invoke MSBuild with the option /p:VisualStudioVersion=$version so it knows from which VS version to load the system build rules. Teach cmGlobalVisualStudio11Generator to set its ExpressEdition member using the registry.
This commit is contained in:
parent
e17f3458ce
commit
7ee3cee919
|
@ -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()
|
||||||
|
|
|
@ -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]/"
|
||||||
|
|
|
@ -205,6 +205,8 @@ std::string cmGlobalVisualStudio10Generator
|
||||||
{
|
{
|
||||||
makeCommand += "Debug";
|
makeCommand += "Debug";
|
||||||
}
|
}
|
||||||
|
makeCommand += " /p:VisualStudioVersion=";
|
||||||
|
makeCommand += this->GetIDEVersion();
|
||||||
if ( additionalOptions )
|
if ( additionalOptions )
|
||||||
{
|
{
|
||||||
makeCommand += " ";
|
makeCommand += " ";
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue