summaryrefslogtreecommitdiffstats
path: root/qmake/generators/win32/msvc_objectmodel.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-08-26 11:01:53 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2021-08-26 18:32:44 +0200
commitb073de274dfe0419b1e8a4f5262b11078fde88e0 (patch)
treeb293405af132a51ad04b4c334e296065b4b6f43d /qmake/generators/win32/msvc_objectmodel.cpp
parent664a7947beb0a48990406f04ef50d28b6291f860 (diff)
qmake: Recognize MSVC 16.x as VS 2019 in the VS project generator
In a subsequent comment we will set the qmake variable MSVC_VER to 16.8 to check for the availability of certain compiler flags that were introduced in that compiler version. The old code compared exact version strings. With this patch we're checking version ranges instead and handle MSVC_VER 16.x as VS 2019. Pick-to: 6.2 5.15 Task-number: QTBUG-89296 Change-Id: I9ea24a66f68a342a72f5c2a285bafacb8786661b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'qmake/generators/win32/msvc_objectmodel.cpp')
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp58
1 files changed, 31 insertions, 27 deletions
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index cf4e2445b1..bb471db4b3 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -40,36 +40,40 @@ using namespace QMakeInternal;
QT_BEGIN_NAMESPACE
-static DotNET vsVersionFromString(const char *versionString)
+DotNET vsVersionFromString(const ProString &versionString)
{
- struct VSVersionMapping
- {
- const char *str;
- DotNET version;
- };
- static VSVersionMapping mapping[] = {
- { "7.0", NET2002 },
- { "7.1", NET2003 },
- { "8.0", NET2005 },
- { "9.0", NET2008 },
- { "10.0", NET2010 },
- { "11.0", NET2012 },
- { "12.0", NET2013 },
- { "14.0", NET2015 },
- { "15.0", NET2017 },
- { "16.0", NET2019 }
- };
- DotNET result = NETUnknown;
- for (const auto entry : mapping) {
- if (strcmp(entry.str, versionString) == 0)
- return entry.version;
+ int idx = versionString.indexOf(QLatin1Char('.'));
+ if (idx == -1)
+ return NETUnknown;
+
+ QStringView versionView = versionString.toQStringView();
+ int versionMajor = versionView.left(idx).toInt();
+ int versionMinor = versionView.mid(idx + 1).toInt();
+
+ if (versionMajor == 16)
+ return NET2019;
+ if (versionMajor == 15)
+ return NET2017;
+ if (versionMajor == 14)
+ return NET2015;
+ if (versionMajor == 12)
+ return NET2013;
+ if (versionMajor == 11)
+ return NET2012;
+ if (versionMajor == 10)
+ return NET2010;
+ if (versionMajor == 9)
+ return NET2008;
+ if (versionMajor == 8)
+ return NET2005;
+ if (versionMajor == 7) {
+ if (versionMinor == 0)
+ return NET2002;
+ if (versionMinor == 1)
+ return NET2003;
}
- return result;
-}
-DotNET vsVersionFromString(const ProString &versionString)
-{
- return vsVersionFromString(versionString.toLatin1().constData());
+ return NETUnknown;
}
// XML Tags ---------------------------------------------------------