diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 3fbc00f7462e94a7654b663876872a826f3642f8..4aeeb44014f7754ed84c05e01469fe9b94de116e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -646,16 +646,14 @@ void CMakeProject::updateRunConfigurations() // TODO Compare with updateDefaultRunConfigurations(); void CMakeProject::updateRunConfigurations(Target *t) { + // create new and remove obsolete RCs using the factories + t->updateDefaultRunConfigurations(); + // *Update* runconfigurations: QMultiMap<QString, CMakeRunConfiguration*> existingRunConfigurations; - QList<ProjectExplorer::RunConfiguration *> toRemove; foreach (ProjectExplorer::RunConfiguration *rc, t->runConfigurations()) { if (CMakeRunConfiguration* cmakeRC = qobject_cast<CMakeRunConfiguration *>(rc)) existingRunConfigurations.insert(cmakeRC->title(), cmakeRC); - QtSupport::CustomExecutableRunConfiguration *ceRC = - qobject_cast<QtSupport::CustomExecutableRunConfiguration *>(rc); - if (ceRC && !ceRC->isConfigured()) - toRemove << rc; } foreach (const CMakeBuildTarget &ct, buildTargets()) { @@ -671,27 +669,8 @@ void CMakeProject::updateRunConfigurations(Target *t) rc->setBaseWorkingDirectory(ct.workingDirectory); rc->setEnabled(true); } - existingRunConfigurations.remove(ct.title); - } else { - // Does not exist yet - Core::Id id = CMakeRunConfigurationFactory::idFromBuildTarget(ct.title); - CMakeRunConfiguration *rc = new CMakeRunConfiguration(t, id, ct.executable, - ct.workingDirectory, ct.title); - t->addRunConfiguration(rc); } } - QMultiMap<QString, CMakeRunConfiguration *>::const_iterator it = - existingRunConfigurations.constBegin(); - for ( ; it != existingRunConfigurations.constEnd(); ++it) { - CMakeRunConfiguration *rc = it.value(); - // The executables for those runconfigurations aren't build by the current buildconfiguration - // We just set a disable flag and show that in the display name - rc->setEnabled(false); - // removeRunConfiguration(rc); - } - - foreach (ProjectExplorer::RunConfiguration *rc, toRemove) - t->removeRunConfiguration(rc); if (t->runConfigurations().isEmpty()) { // Oh no, no run configuration,