ProjectExplorer: No native dir separators in detectCppBuildTools2015

Having native dir separators in the autodetected C++ build tools 2015
caused Qt Creator to add all msvc compilers a second time as manual
MSVC versions. Reason was one different dir separator during string
comparison in AbstractMsvcToolChain::operator ==

detectCppBuildTools2017 did the conversion right

Change-Id: Iff04428bcc47636b161b944c94cadf12b0c549da
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Alessandro Portale
2017-12-13 13:37:33 +01:00
parent 79ba461a46
commit 67c3b232f8

View File

@@ -146,16 +146,20 @@ QDebug operator<<(QDebug d, const VisualStudioInstallation &i)
return d; return d;
} }
// Detect build tools introduced with MSVC2017 static QString windowsProgramFilesDir()
static Utils::optional<VisualStudioInstallation> detectCppBuildTools2017()
{ {
#ifdef Q_OS_WIN64 #ifdef Q_OS_WIN64
const char programFilesC[] = "ProgramFiles(x86)"; const char programFilesC[] = "ProgramFiles(x86)";
#else #else
const char programFilesC[] = "ProgramFiles"; const char programFilesC[] = "ProgramFiles";
#endif #endif
return QDir::fromNativeSeparators(QFile::decodeName(qgetenv(programFilesC)));
}
const QString installPath = QDir::fromNativeSeparators(QFile::decodeName(qgetenv(programFilesC))) // Detect build tools introduced with MSVC2017
static Utils::optional<VisualStudioInstallation> detectCppBuildTools2017()
{
const QString installPath = windowsProgramFilesDir()
+ "/Microsoft Visual Studio/2017/BuildTools"; + "/Microsoft Visual Studio/2017/BuildTools";
const QString vcVarsPath = installPath + "/VC/Auxiliary/Build"; const QString vcVarsPath = installPath + "/VC/Auxiliary/Build";
const QString vcVarsAllPath = vcVarsPath + "/vcvarsall.bat"; const QString vcVarsAllPath = vcVarsPath + "/vcvarsall.bat";
@@ -887,14 +891,9 @@ static void detectCppBuildTools2015(QList<ToolChain *> *list)
{" (x64_arm)", "amd64_arm", Abi::ArmArchitecture, Abi::PEFormat, 64} {" (x64_arm)", "amd64_arm", Abi::ArmArchitecture, Abi::PEFormat, 64}
}; };
#ifdef Q_OS_WIN64
const char programFilesC[] = "ProgramFiles(x86)";
#else
const char programFilesC[] = "ProgramFiles";
#endif
const QString name = QStringLiteral("Microsoft Visual C++ Build Tools"); const QString name = QStringLiteral("Microsoft Visual C++ Build Tools");
const QString vcVarsBat = QFile::decodeName(qgetenv(programFilesC)) const QString vcVarsBat = windowsProgramFilesDir()
+ QLatin1Char('/') + name + QStringLiteral("/vcbuildtools.bat"); + QLatin1Char('/') + name + QStringLiteral("/vcbuildtools.bat");
if (!QFileInfo(vcVarsBat).isFile()) if (!QFileInfo(vcVarsBat).isFile())
return; return;
const size_t count = sizeof(entries) / sizeof(entries[0]); const size_t count = sizeof(entries) / sizeof(entries[0]);