summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mkspecs/common/msvc-based-version.conf5
-rw-r--r--mkspecs/common/msvc-version.conf5
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp2
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h3
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp10
5 files changed, 24 insertions, 1 deletions
diff --git a/mkspecs/common/msvc-based-version.conf b/mkspecs/common/msvc-based-version.conf
index b53e3b61aa..ba72c3a0ac 100644
--- a/mkspecs/common/msvc-based-version.conf
+++ b/mkspecs/common/msvc-based-version.conf
@@ -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
diff --git a/mkspecs/common/msvc-version.conf b/mkspecs/common/msvc-version.conf
index b3689dec41..fda50faabf 100644
--- a/mkspecs/common/msvc-version.conf
+++ b/mkspecs/common/msvc-version.conf
@@ -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
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index c8b25fe61d..a18eb076bd 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -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)
diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h
index f239da8473..c5da1ec3ed 100644
--- a/qmake/generators/win32/msvc_objectmodel.h
+++ b/qmake/generators/win32/msvc_objectmodel.h
@@ -53,7 +53,8 @@ enum DotNET {
NET2013 = 0xc0,
NET2015 = 0xd0,
NET2017 = 0xe0,
- NET2019
+ NET2019,
+ NET2022
};
DotNET vsVersionFromString(const ProString &versionString);
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index a2750a8f6d..f89a3db87b 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -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;