VS: Fix '-T version=14.40' under VS 17.10 preview 1

VS 17.10 preview 1 comes with toolset `v143` version `14.40`.  This is
the first time that the first three digits of the version do not match
the toolset name.  Add a special case to map version `14.40` back to
toolset `v143`.
This commit is contained in:
Brad King 2024-02-19 11:51:25 -05:00
parent 3a7fbd04c8
commit d256581bb0

View File

@ -223,6 +223,14 @@ bool cmGlobalVisualStudio10Generator::SetGeneratorToolset(
if (versionToolsetRegex.find(versionToolset)) {
versionToolset = cmStrCat('v', versionToolsetRegex.match(1),
versionToolsetRegex.match(2));
// Hard-code special cases for toolset versions whose first
// three digits do not match their toolset name.
if (platformToolset == "v143"_s && versionToolset == "v144"_s &&
// VS 17.10 toolset v143 version 14.40.
(this->GeneratorToolsetVersion == "14.40"_s ||
cmHasLiteralPrefix(this->GeneratorToolsetVersion, "14.40."))) {
versionToolset = "v143";
}
} else {
// Version not recognized. Clear it.
versionToolset.clear();