From 27431de1627d95329712f4af8362fcaf2667aad5 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 7 Dec 2016 10:38:18 -0500 Subject: [PATCH] VS: Fix standalone Windows7.1SDK toolset selection Since commit v3.7.0-rc1~142^2~1 (VS: Explicitly default to v100 toolset in Visual Studio 2010, 2016-07-21) we prefer to always set a platform toolset explicitly so that `CMAKE_VS_PLATFORM_TOOLSET` can be reported. However, the `v100` default for the VS 10 generator is not appropriate for all environments. We fixed support for VS 2010 Express Edition in commit v3.7.0-rc1~142^2 (VS: Do not default to missing v100 64-bit toolset on VS 2010 Express, 2016-09-09). Fix support for the standalone Windows7.1SDK toolset environment by recognizing the `PlatformToolset` environment variable that it sets to `Windows7.1SDK` and using this as our default toolset instead. Closes: #16483 --- Source/cmGlobalVisualStudio10Generator.cxx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Source/cmGlobalVisualStudio10Generator.cxx b/Source/cmGlobalVisualStudio10Generator.cxx index caaac87f0..502c93afd 100644 --- a/Source/cmGlobalVisualStudio10Generator.cxx +++ b/Source/cmGlobalVisualStudio10Generator.cxx @@ -93,7 +93,16 @@ cmGlobalVisualStudio10Generator::cmGlobalVisualStudio10Generator( this->SystemIsWindowsPhone = false; this->SystemIsWindowsStore = false; this->MSBuildCommandInitialized = false; - this->DefaultPlatformToolset = "v100"; + { + std::string envPlatformToolset; + if (cmSystemTools::GetEnv("PlatformToolset", envPlatformToolset) && + envPlatformToolset == "Windows7.1SDK") { + // We are running from a Windows7.1SDK command prompt. + this->DefaultPlatformToolset = "Windows7.1SDK"; + } else { + this->DefaultPlatformToolset = "v100"; + } + } this->Version = VS10; }