diff options
author | Brad King <brad.king@kitware.com> | 2017-02-21 19:05:59 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-02-21 19:05:59 (GMT) |
commit | e9e8a5dc084b470a50ab4a16008db30022068fb0 (patch) | |
tree | 75c867d7a125ad301735ca8e13e0f7c68399c990 | |
parent | fe8f5b54f561de6fa8fed1186aa7ef3ce721b7d9 (diff) | |
parent | 2da0838c64b6d43fd12eecb5d65ac458a335b266 (diff) | |
download | CMake-e9e8a5dc084b470a50ab4a16008db30022068fb0.zip CMake-e9e8a5dc084b470a50ab4a16008db30022068fb0.tar.gz CMake-e9e8a5dc084b470a50ab4a16008db30022068fb0.tar.bz2 |
Merge branch 'vs2017-fallback-sdk' into release
-rw-r--r-- | Source/cmGlobalVisualStudio15Generator.cxx | 34 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio15Generator.h | 4 |
2 files changed, 38 insertions, 0 deletions
diff --git a/Source/cmGlobalVisualStudio15Generator.cxx b/Source/cmGlobalVisualStudio15Generator.cxx index d11ee7c..2312bc0 100644 --- a/Source/cmGlobalVisualStudio15Generator.cxx +++ b/Source/cmGlobalVisualStudio15Generator.cxx @@ -109,6 +109,18 @@ void cmGlobalVisualStudio15Generator::WriteSLNHeader(std::ostream& fout) } } +bool cmGlobalVisualStudio15Generator::InitializeWindows(cmMakefile* mf) +{ + // If the Win 8.1 SDK is installed then we can select a SDK matching + // the target Windows version. + if (this->IsWin81SDKInstalled()) { + return cmGlobalVisualStudio14Generator::InitializeWindows(mf); + } + // Otherwise we must choose a Win 10 SDK even if we are not targeting + // Windows 10. + return this->SelectWindows10SDK(mf, false); +} + bool cmGlobalVisualStudio15Generator::SelectWindowsStoreToolset( std::string& toolset) const { @@ -135,6 +147,28 @@ bool cmGlobalVisualStudio15Generator::IsWindowsStoreToolsetInstalled() const return vsSetupAPIHelper.IsWin10SDKInstalled(); } +bool cmGlobalVisualStudio15Generator::IsWin81SDKInstalled() const +{ + // Does the VS installer tool know about one? + if (vsSetupAPIHelper.IsWin81SDKInstalled()) { + return true; + } + + // Does the registry know about one (e.g. from VS 2015)? + std::string win81Root; + if (cmSystemTools::ReadRegistryValue( + "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\" + "Windows Kits\\Installed Roots;KitsRoot81", + win81Root, cmSystemTools::KeyWOW64_32) || + cmSystemTools::ReadRegistryValue( + "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\" + "Windows Kits\\Installed Roots;KitsRoot81", + win81Root, cmSystemTools::KeyWOW64_32)) { + return true; + } + return false; +} + std::string cmGlobalVisualStudio15Generator::FindMSBuildCommand() { std::string msbuild; diff --git a/Source/cmGlobalVisualStudio15Generator.h b/Source/cmGlobalVisualStudio15Generator.h index 781b41e..f979b65 100644 --- a/Source/cmGlobalVisualStudio15Generator.h +++ b/Source/cmGlobalVisualStudio15Generator.h @@ -28,6 +28,7 @@ public: virtual const char* GetToolsVersion() { return "15.0"; } protected: + bool InitializeWindows(cmMakefile* mf) CM_OVERRIDE; virtual bool SelectWindowsStoreToolset(std::string& toolset) const; virtual const char* GetIDEVersion() { return "15.0"; } @@ -40,6 +41,9 @@ protected: // of the toolset is installed bool IsWindowsStoreToolsetInstalled() const; + // Check for a Win 8 SDK known to the registry or VS installer tool. + bool IsWin81SDKInstalled() const; + std::string FindMSBuildCommand() CM_OVERRIDE; std::string FindDevEnvCommand() CM_OVERRIDE; |