forked from qt-creator/qt-creator
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:
@@ -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]);
|
||||||
|
|||||||
Reference in New Issue
Block a user