forked from qt-creator/qt-creator
ProjectExplorer: Do not detect clang-cl executables more than once
This fixes soft asserts in ToolchainManager. Change-Id: I629d57ae51fab90874b00685494c9aa1c49ef86d Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -1623,9 +1623,8 @@ static Toolchains detectClangClToolChainInPath(const FilePath &clangClPath,
|
||||
.arg(QLatin1String(isDefault ? "Default " : ""))
|
||||
.arg(targetAbi.wordWidth())
|
||||
.arg(Abi::toString(targetAbi.osFlavor()).toUpper());
|
||||
for (auto language : {Id(Constants::C_LANGUAGE_ID), Id(Constants::CXX_LANGUAGE_ID)}) {
|
||||
ClangClToolchain *tc = static_cast<ClangClToolchain *>(
|
||||
Utils::findOrDefault(alreadyKnown, [&](Toolchain *tc) -> bool {
|
||||
for (const Id language : {Id(Constants::C_LANGUAGE_ID), Id(Constants::CXX_LANGUAGE_ID)}) {
|
||||
if (Utils::findOrDefault(alreadyKnown, [&](Toolchain *tc) {
|
||||
if (tc->typeId() != Constants::CLANG_CL_TOOLCHAIN_TYPEID)
|
||||
return false;
|
||||
if (tc->targetAbi() != targetAbi)
|
||||
@@ -1633,10 +1632,10 @@ static Toolchains detectClangClToolChainInPath(const FilePath &clangClPath,
|
||||
if (tc->language() != language)
|
||||
return false;
|
||||
return tc->compilerCommand().isSameExecutable(clangClPath);
|
||||
}));
|
||||
if (tc) {
|
||||
res << tc;
|
||||
} else {
|
||||
})) {
|
||||
continue;
|
||||
}
|
||||
|
||||
auto cltc = new ClangClToolchain;
|
||||
cltc->setClangPath(clangClPath);
|
||||
cltc->setDisplayName(name);
|
||||
@@ -1645,7 +1644,6 @@ static Toolchains detectClangClToolChainInPath(const FilePath &clangClPath,
|
||||
cltc->setupVarsBat(toolChain->targetAbi(), toolChain->varsBat(), toolChain->varsBatArg());
|
||||
res << cltc;
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user