diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 243fdb83f9f..3f90ec7a4c5 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -623,18 +623,22 @@ void CMakeBuildSystem::updateProjectData() if (newRoot) { setRootProjectNode(std::move(newRoot)); - const FilePath buildDir = cmakeBuildConfiguration()->buildDirectory(); - if (p->rootProjectNode()) { + if (QTC_GUARD(p->rootProjectNode())) { const QString nodeName = p->rootProjectNode()->displayName(); p->setDisplayName(nodeName); - } - for (const CMakeBuildTarget &bt : qAsConst(m_buildTargets)) { - const QString buildKey = bt.title; - if (ProjectNode *node = p->findNodeForBuildKey(buildKey)) { - if (auto targetNode = dynamic_cast(node)) - targetNode->setConfig(patchedConfig); - } + // set config on target nodes + const QSet buildKeys = Utils::transform(m_buildTargets, + &CMakeBuildTarget::title); + p->rootProjectNode()->forEachProjectNode( + [patchedConfig, buildKeys](const ProjectNode *node) { + if (buildKeys.contains(node->buildKey())) { + auto targetNode = const_cast( + dynamic_cast(node)); + if (QTC_GUARD(targetNode)) + targetNode->setConfig(patchedConfig); + } + }); } } }