diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2016-11-29 15:42:34 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2016-12-02 12:48:04 +0000 |
commit | d66fe82e645fc42c00c3aef720b22691443764c1 (patch) | |
tree | 7270999778a0668dd642af58f140290b97217dc6 /src/lib/corelib/tools/vsenvironmentdetector.cpp | |
parent | 4be3a8c2634c57589ff5521d6dbdf5e8c5f9fbcf (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.cpp | 30 |
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; } |