aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/tools/vsenvironmentdetector.cpp
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2016-11-29 15:42:34 +0100
committerJoerg Bornemann <joerg.bornemann@qt.io>2016-12-02 12:48:04 +0000
commitd66fe82e645fc42c00c3aef720b22691443764c1 (patch)
tree7270999778a0668dd642af58f140290b97217dc6 /src/lib/corelib/tools/vsenvironmentdetector.cpp
parent4be3a8c2634c57589ff5521d6dbdf5e8c5f9fbcf (diff)
Add VS 2017 support
Task-number: QBS-1025 Change-Id: Ib08373b6b45fa0b728e68466d08d43a14f864d72 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/tools/vsenvironmentdetector.cpp')
-rw-r--r--src/lib/corelib/tools/vsenvironmentdetector.cpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/lib/corelib/tools/vsenvironmentdetector.cpp b/src/lib/corelib/tools/vsenvironmentdetector.cpp
index c4db89fec..291c150c9 100644
--- a/src/lib/corelib/tools/vsenvironmentdetector.cpp
+++ b/src/lib/corelib/tools/vsenvironmentdetector.cpp
@@ -98,12 +98,34 @@ bool VsEnvironmentDetector::start(QVector<MSVC *> msvcs)
return true;
}
+QString VsEnvironmentDetector::findVcVarsAllBat(const MSVC &msvc) const
+{
+ // ### We can only rely on MSVC.vcInstallPath being set
+ // when this is called from utilitiesextension.cpp :-(
+ // If we knew the vsInstallPath at this point we could just use that
+ // instead of searching for vcvarsall.bat candidates.
+ QDir dir(msvc.vcInstallPath);
+ for (;;) {
+ if (!dir.cdUp())
+ return QString();
+ if (dir.dirName() == QLatin1String("VC"))
+ break;
+ }
+ const QString vcvarsallbat = QStringLiteral("vcvarsall.bat");
+ QString path = vcvarsallbat;
+ if (dir.exists(path))
+ return dir.absoluteFilePath(path);
+ path = QLatin1String("Auxiliary/Build/") + vcvarsallbat;
+ if (dir.exists(path))
+ return dir.absoluteFilePath(path);
+ return QString();
+}
+
bool VsEnvironmentDetector::startDetection(const QVector<MSVC *> &compatibleMSVCs)
{
- const QString vcvarsallbat = QDir::cleanPath(compatibleMSVCs.first()->vcInstallPath
- + QLatin1String("/../vcvarsall.bat"));
- if (!QFile::exists(vcvarsallbat)) {
- m_errorString = Tr::tr("Cannot find '%1'.").arg(QDir::toNativeSeparators(vcvarsallbat));
+ const QString vcvarsallbat = findVcVarsAllBat(*compatibleMSVCs.first());
+ if (vcvarsallbat.isEmpty()) {
+ m_errorString = Tr::tr("Cannot find 'vcvarsall.bat'.");
return false;
}