|  | @@ -212,6 +212,12 @@ bool cmGlobalVisualStudio14Generator::IsWindowsStoreToolsetInstalled() const
 | 
	
		
			
				|  |  |                                            cmSystemTools::KeyWOW64_32);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +std::string cmGlobalVisualStudio14Generator::GetWindows10SDKMaxVersion() const
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  // The last Windows 10 SDK version that VS 2015 can target is 10.0.14393.0.
 | 
	
		
			
				|  |  | +  return "10.0.14393.0";
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #if defined(_WIN32) && !defined(__CYGWIN__)
 | 
	
		
			
				|  |  |  struct NoWindowsH
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -220,6 +226,20 @@ struct NoWindowsH
 | 
	
		
			
				|  |  |      return !cmSystemTools::FileExists(p + "/um/windows.h", true);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  | +class WindowsSDKTooRecent
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  std::string const& MaxVersion;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +public:
 | 
	
		
			
				|  |  | +  WindowsSDKTooRecent(std::string const& maxVersion)
 | 
	
		
			
				|  |  | +    : MaxVersion(maxVersion)
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  bool operator()(std::string const& v)
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    return cmSystemTools::VersionCompareGreater(v, MaxVersion);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  std::string cmGlobalVisualStudio14Generator::GetWindows10SDKVersion()
 | 
	
	
		
			
				|  | @@ -276,6 +296,12 @@ std::string cmGlobalVisualStudio14Generator::GetWindows10SDKVersion()
 | 
	
		
			
				|  |  |      // Sort the results to make sure we select the most recent one.
 | 
	
		
			
				|  |  |      std::sort(sdks.begin(), sdks.end(), cmSystemTools::VersionCompareGreater);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // Skip SDKs that cannot be used with our toolset.
 | 
	
		
			
				|  |  | +    std::string maxVersion = this->GetWindows10SDKMaxVersion();
 | 
	
		
			
				|  |  | +    if (!maxVersion.empty()) {
 | 
	
		
			
				|  |  | +      cmEraseIf(sdks, WindowsSDKTooRecent(maxVersion));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // Look for a SDK exactly matching the requested target version.
 | 
	
		
			
				|  |  |      for (std::string const& i : sdks) {
 | 
	
		
			
				|  |  |        if (cmSystemTools::VersionCompareEqual(i, this->SystemVersion)) {
 |