diff options
author | David Schulz <david.schulz@qt.io> | 2019-03-15 12:57:57 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-03-15 15:03:47 +0000 |
commit | 206debe875417c9c7740eefe37349caecc64f164 (patch) | |
tree | 239152c66c3299c5887968438df61e4a22f097c5 | |
parent | 216b592da415e78b805204b58b5e15a208338004 (diff) |
Fix version detection for MSVC 2017
The version number for recent MSVC2017 installation has changed to the
format \d+\.\d+\.\d+\.\d+ and the second number is not guaranteed to be
a zero.
Change-Id: I13728d2a5ea3162c3ff29558757cd576a83f4983
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/app/qbs-setup-toolchains/msvcprobe.cpp | 4 | ||||
-rw-r--r-- | src/lib/corelib/tools/version.cpp | 2 | ||||
-rw-r--r-- | src/lib/corelib/tools/visualstudioversioninfo.cpp | 3 |
3 files changed, 5 insertions, 4 deletions
diff --git a/src/app/qbs-setup-toolchains/msvcprobe.cpp b/src/app/qbs-setup-toolchains/msvcprobe.cpp index 3bb99fd22..a6292d860 100644 --- a/src/app/qbs-setup-toolchains/msvcprobe.cpp +++ b/src/app/qbs-setup-toolchains/msvcprobe.cpp @@ -295,7 +295,7 @@ static std::vector<MSVC> installedMSVCs() installInfos = installedMSVCsFromRegistry(); for (const MSVCInstallInfo &installInfo : installInfos) { MSVC msvc; - msvc.internalVsVersion = Version::fromString(installInfo.version); + msvc.internalVsVersion = Version::fromString(installInfo.version, true); if (!msvc.internalVsVersion.isValid()) continue; @@ -307,7 +307,7 @@ static std::vector<MSVC> installedMSVCs() } msvc.version = QString::number(Internal::VisualStudioVersionInfo( - Version::fromString(installInfo.version)).marketingVersion()); + msvc.internalVsVersion).marketingVersion()); if (msvc.version.isEmpty()) { qbsWarning() << Tr::tr("Unknown MSVC version %1 found.").arg(installInfo.version); continue; diff --git a/src/lib/corelib/tools/version.cpp b/src/lib/corelib/tools/version.cpp index ccc9dd799..7ea2fda75 100644 --- a/src/lib/corelib/tools/version.cpp +++ b/src/lib/corelib/tools/version.cpp @@ -94,7 +94,7 @@ Version Version::fromString(const QString &versionString, bool buildNumberAllowe for (int i = 0; i < 2; ++i) pattern += QStringLiteral("(?:\\.(\\d+))?"); // Followed by a dot and a number up to two times. if (buildNumberAllowed) - pattern += QStringLiteral("(?:-(\\d+))?"); // And possibly a dash followed by the build number. + pattern += QStringLiteral("(?:[-.](\\d+))?"); // And possibly a dash or dot followed by the build number. QRegExp rex(pattern); if (!rex.exactMatch(versionString)) return Version{}; diff --git a/src/lib/corelib/tools/visualstudioversioninfo.cpp b/src/lib/corelib/tools/visualstudioversioninfo.cpp index 5383dcae0..008ab115d 100644 --- a/src/lib/corelib/tools/visualstudioversioninfo.cpp +++ b/src/lib/corelib/tools/visualstudioversioninfo.cpp @@ -53,7 +53,8 @@ VisualStudioVersionInfo::VisualStudioVersionInfo() VisualStudioVersionInfo::VisualStudioVersionInfo(const Version &version) : m_version(version) { - QBS_CHECK(version.minorVersion() == 0 || version == Version(7, 1)); + QBS_CHECK(version.minorVersion() == 0 || version == Version(7, 1) + || version.majorVersion() >= 15); } std::set<VisualStudioVersionInfo> VisualStudioVersionInfo::knownVersions() |