diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index e38c78fbc88..949b3c480ef 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -736,4 +736,17 @@ void Kit::kitUpdated() d->m_mustNotify = false; } + +static Id replacementKey() { return "IsReplacementKit"; } + +void ProjectExplorer::Kit::makeReplacementKit() +{ + setValueSilently(replacementKey(), true); +} + +bool Kit::isReplacementKit() const +{ + return value(replacementKey()).toBool(); +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/kit.h b/src/plugins/projectexplorer/kit.h index 24d16b3ed92..f7c75c50296 100644 --- a/src/plugins/projectexplorer/kit.h +++ b/src/plugins/projectexplorer/kit.h @@ -132,6 +132,9 @@ public: void setMutable(Utils::Id id, bool b); bool isMutable(Utils::Id id) const; + void makeReplacementKit(); + bool isReplacementKit() const; + void setIrrelevantAspects(const QSet &irrelevant); QSet irrelevantAspects() const; diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 14288d7bb2b..70151b58002 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -235,6 +235,13 @@ void KitManager::restoreKits() // Delete all loaded autodetected kits that were not rediscovered: kitsToCheck.clear(); + // Remove replacement kits for which the original kit has turned up again. + erase(resultList, [&resultList](const std::unique_ptr &k) { + return k->isReplacementKit() && contains(resultList, [&k](const std::unique_ptr &other) { + return other->id() == k->id() && other != k; + }); + }); + static const auto kitMatchesAbiList = [](const Kit *kit, const Abis &abis) { const QList toolchains = ToolChainKitAspect::toolChains(kit); for (const ToolChain * const tc : toolchains) { diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 7f32733e1aa..1ae6d334709 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -776,6 +776,7 @@ void Project::createTargetFromMap(const QVariantMap &map, int index) Utils::transform(KitManager::kits(), &Kit::unexpandedDisplayName)); kit->setUnexpandedDisplayName(tempKitName); DeviceTypeKitAspect::setDeviceTypeId(kit, deviceTypeId); + kit->makeReplacementKit(); kit->setup(); }, id); TaskHub::addTask(BuildSystemTask(Task::Warning, tr("Project \"%1\" was configured for "