From d44f81c2173d56cba662bc414f7cd2dc030b74fe Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 8 Jan 2019 13:45:08 -0500 Subject: VS: Exclude VS 2019 instances when using VS 2017 generator Filter instances reported by the VS Installer to consider only VS 2017 instances for the "Visual Studio 15 2017" generator. Fixes: #18721 --- Source/cmVSSetupHelper.cxx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Source/cmVSSetupHelper.cxx b/Source/cmVSSetupHelper.cxx index 22fe007bae..19c96b3bb5 100644 --- a/Source/cmVSSetupHelper.cxx +++ b/Source/cmVSSetupHelper.cxx @@ -295,6 +295,9 @@ bool cmVSSetupAPIHelper::EnumerateAndChooseVSInstance() return false; } + // FIXME: Add a way for caller to specify other versions. + std::wstring wantVersion = std::to_wstring(15) + L'.'; + SmartCOMPtr instance; while (SUCCEEDED(enumInstances->Next(1, &instance, NULL)) && instance) { SmartCOMPtr instance2 = NULL; @@ -310,6 +313,12 @@ bool cmVSSetupAPIHelper::EnumerateAndChooseVSInstance() instance = instance2 = NULL; if (isInstalled) { + // We are looking for a specific major version. + if (instanceInfo.Version.size() < wantVersion.size() || + instanceInfo.Version.substr(0, wantVersion.size()) != wantVersion) { + continue; + } + if (!this->SpecifiedVSInstallLocation.empty()) { // We are looking for a specific instance. std::string currentVSLocation = instanceInfo.GetInstallLocation(); -- cgit v1.2.1