1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

VS: Generalize Win10 max SDK version to all VS generators

The `CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` variable added in
CMake 3.19 by commit ba497111f6 (VS: Add option for custom Win10 SDK
version maximum, 2020-08-20, v3.19.0-rc1~262^2) was documented as if it
worked for all generators but implemented only to override CMake's
builtin default for the VS 2015 max SDK version.  Generalize the
variable to set a custom max SDK version for later VS versions too.

Fixes: #21720
This commit is contained in:
jonathan molinatto
2021-01-20 09:55:41 -05:00
committed by Brad King
parent 2c0e4c3762
commit 1e67482daf
6 changed files with 23 additions and 4 deletions

View File

@@ -400,3 +400,11 @@ Changes made since CMake 3.19.0 include the following.
* The naming pattern ``cmake-$ver-macos10.10-universal`` is a universal
binary with ``x86_64`` and ``arm64`` architectures. It requires
macOS 10.10 or newer.
3.19.4
------
* The :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM`
variable introduced in 3.19.0 previously worked only with the
:generator:`Visual Studio 14 2015` generator. It has now been fixed to
work with :ref:`Visual Studio Generators` for later VS versions too.

View File

@@ -3,7 +3,7 @@ CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM
.. versionadded:: 3.19
Override the :ref:`Windows 10 SDK Maximum Version for VS 2015`.
Override the :ref:`Windows 10 SDK Maximum Version for VS 2015` and beyond.
The :variable:`CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM` variable may
be set to a false value (e.g. ``OFF``, ``FALSE``, or ``0``) or the SDK version

View File

@@ -253,6 +253,12 @@ std::string cmGlobalVisualStudio14Generator::GetWindows10SDKMaxVersion(
// If value is an invalid pointer, leave result unchanged.
}
return this->GetWindows10SDKMaxVersionDefault(mf);
}
std::string cmGlobalVisualStudio14Generator::GetWindows10SDKMaxVersionDefault(
cmMakefile*) const
{
// The last Windows 10 SDK version that VS 2015 can target is 10.0.14393.0.
//
// "VS 2015 Users: The Windows 10 SDK (15063, 16299, 17134, 17763) is

View File

@@ -40,9 +40,13 @@ protected:
// of the toolset is installed
bool IsWindowsStoreToolsetInstalled() const;
// Used to adjust the max-SDK-version calculation to accommodate user
// configuration.
std::string GetWindows10SDKMaxVersion(cmMakefile* mf) const;
// Used to make sure that the Windows 10 SDK selected can work with the
// version of the toolset.
virtual std::string GetWindows10SDKMaxVersion(cmMakefile* mf) const;
virtual std::string GetWindows10SDKMaxVersionDefault(cmMakefile* mf) const;
virtual bool SelectWindows10SDK(cmMakefile* mf, bool required);

View File

@@ -540,7 +540,8 @@ bool cmGlobalVisualStudioVersionedGenerator::IsWin81SDKInstalled() const
return false;
}
std::string cmGlobalVisualStudioVersionedGenerator::GetWindows10SDKMaxVersion(
std::string
cmGlobalVisualStudioVersionedGenerator::GetWindows10SDKMaxVersionDefault(
cmMakefile*) const
{
return std::string();

View File

@@ -56,7 +56,7 @@ protected:
// Check for a Win 8 SDK known to the registry or VS installer tool.
bool IsWin81SDKInstalled() const;
std::string GetWindows10SDKMaxVersion(cmMakefile*) const override;
std::string GetWindows10SDKMaxVersionDefault(cmMakefile*) const override;
std::string FindMSBuildCommand() override;
std::string FindDevEnvCommand() override;