aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/tools/msvcinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/tools/msvcinfo.cpp')
-rw-r--r--src/lib/corelib/tools/msvcinfo.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/corelib/tools/msvcinfo.cpp b/src/lib/corelib/tools/msvcinfo.cpp
index ed94613d9..58cd458c3 100644
--- a/src/lib/corelib/tools/msvcinfo.cpp
+++ b/src/lib/corelib/tools/msvcinfo.cpp
@@ -510,11 +510,32 @@ QString MSVC::architectureFromClPath(const QString &clPath)
{
const auto parentDir = QFileInfo(clPath).absolutePath();
const auto parentDirName = QFileInfo(parentDir).fileName().toLower();
+ // can be the case when cl.exe is present within the Windows SDK installation... but can it?
if (parentDirName == QLatin1String("bin"))
return QStringLiteral("x86");
return parentDirName;
}
+QString MSVC::vcVariablesVersionFromBinPath(const QString &binPath)
+{
+ const auto binDirName = QFileInfo(binPath).fileName().toLower();
+ // the case when cl.exe is present within the Windows SDK installation
+ if (binDirName == QLatin1String("bin"))
+ return {};
+ // binPath is something like
+ // Microsoft Visual Studio 14.0/VC/bin/amd64_x86
+ // or
+ // Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64
+ QDir dir(binPath);
+ dir.cdUp();
+ // older Visual Studios do not support multiple compiler versions
+ if (dir.dirName().toLower() == QLatin1String("bin"))
+ return {};
+ dir.cdUp();
+ dir.cdUp();
+ return dir.dirName();
+}
+
QString MSVC::canonicalArchitecture(const QString &arch)
{
if (arch == QLatin1String("x64") || arch == QLatin1String("amd64"))