qmake: Support Visual Studio 2022

Extend the detection of the MSCV_VER variable and make VS 2022 known to
the vcxproj generator.

[ChangeLog][qmake] Added support for Visual Studio 2022.

Fixes: QTBUG-97975
Change-Id: Id2c0a0b7800f721e9e34189f0a40ba4830283578
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
(cherry picked from commit 1c880752eb891e77c3d3b5ffbf60fbb9109120fb)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Joerg Bornemann 2021-11-09 14:05:04 +01:00 committed by Qt Cherry-pick Bot
parent 87f0096c80
commit de2395d757
5 changed files with 24 additions and 1 deletions

View File

@ -34,4 +34,9 @@ greaterThan(QMAKE_MSC_VER, 1919) {
MSVC_VER = 16.0
}
greaterThan(QMAKE_MSC_VER, 1929) {
# Visual Studio 2022 (17.0) / Visual C++ 19.30 and up
MSVC_VER = 17.0
}
!isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC

View File

@ -124,4 +124,9 @@ greaterThan(QMAKE_MSC_VER, 1927) {
QMAKE_CFLAGS_C17 = /std:c17
}
greaterThan(QMAKE_MSC_VER, 1929) {
# Visual Studio 2022 (17.0) / Visual C++ 19.30 and up
MSVC_VER = 17.0
}
!isEmpty(COMPAT_MKSPEC):!$$COMPAT_MKSPEC: CONFIG += $$COMPAT_MKSPEC

View File

@ -50,6 +50,8 @@ DotNET vsVersionFromString(const ProString &versionString)
int versionMajor = versionView.left(idx).toInt();
int versionMinor = versionView.mid(idx + 1).toInt();
if (versionMajor == 17)
return NET2022;
if (versionMajor == 16)
return NET2019;
if (versionMajor == 15)

View File

@ -53,7 +53,8 @@ enum DotNET {
NET2013 = 0xc0,
NET2015 = 0xd0,
NET2017 = 0xe0,
NET2019
NET2019,
NET2022
};
DotNET vsVersionFromString(const ProString &versionString);

View File

@ -78,6 +78,8 @@ const char _slnHeader141[] = "Microsoft Visual Studio Solution File, Format
"\n# Visual Studio 15";
const char _slnHeader142[] = "Microsoft Visual Studio Solution File, Format Version 12.00"
"\n# Visual Studio Version 16";
const char _slnHeader143[] = "Microsoft Visual Studio Solution File, Format Version 12.00"
"\n# Visual Studio Version 17";
// The following UUID _may_ change for later servicepacks...
// If so we need to search through the registry at
// HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\7.0\Projects
@ -311,6 +313,8 @@ QString VcprojGenerator::retrievePlatformToolSet() const
return QStringLiteral("v141");
case NET2019:
return QStringLiteral("v142");
case NET2022:
return QStringLiteral("v143");
default:
return QString();
}
@ -538,6 +542,9 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
}
switch (vcProject.Configuration.CompilerVersion) {
case NET2022:
t << _slnHeader143;
break;
case NET2019:
t << _slnHeader142;
break;
@ -915,6 +922,9 @@ void VcprojGenerator::initProject()
// Own elements -----------------------------
vcProject.Name = project->first("QMAKE_ORIG_TARGET").toQString();
switch (vcProject.Configuration.CompilerVersion) {
case NET2022:
vcProject.Version = "17.00";
break;
case NET2019:
vcProject.Version = "16.00";
break;