diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h index 087db1cd07e..43654d339fa 100644 --- a/src/plugins/projectexplorer/projectexplorersettings.h +++ b/src/plugins/projectexplorer/projectexplorersettings.h @@ -49,6 +49,7 @@ public: bool useJom = true; bool autorestoreLastSession = false; // This option is set in the Session Manager! bool prompToStopRunControl = false; + bool automaticallyCreateRunConfigurations = true; bool addLibraryPathsToRunEnv = true; int maxAppOutputLines = Core::Constants::DEFAULT_MAX_LINE_COUNT; int maxBuildOutputLines = Core::Constants::DEFAULT_MAX_LINE_COUNT; @@ -74,6 +75,7 @@ inline bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerS && p1.useJom == p2.useJom && p1.autorestoreLastSession == p2.autorestoreLastSession && p1.prompToStopRunControl == p2.prompToStopRunControl + && p1.automaticallyCreateRunConfigurations == p2.automaticallyCreateRunConfigurations && p1.addLibraryPathsToRunEnv == p2.addLibraryPathsToRunEnv && p1.maxAppOutputLines == p2.maxAppOutputLines && p1.maxBuildOutputLines == p2.maxBuildOutputLines diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp index cd7e6db4808..f28e17f8922 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp +++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp @@ -108,7 +108,7 @@ ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const m_settings.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked(); m_settings.useJom = m_ui.jomCheckbox->isChecked(); m_settings.addLibraryPathsToRunEnv = m_ui.addLibraryPathsToRunEnvCheckBox->isChecked(); - m_settings.prompToStopRunControl = m_ui.promptToStopRunControlCheckBox->isChecked(); + m_settings.automaticallyCreateRunConfigurations = m_ui.automaticallyCreateRunConfiguration->isChecked(); m_settings.maxAppOutputLines = m_ui.maxAppOutputBox->value(); m_settings.maxBuildOutputLines = m_ui.maxBuildOutputBox->value(); m_settings.stopBeforeBuild = static_cast(m_ui.stopBeforeBuildComboBox->currentIndex()); @@ -130,6 +130,7 @@ void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings & m_ui.jomCheckbox->setChecked(m_settings.useJom); m_ui.addLibraryPathsToRunEnvCheckBox->setChecked(m_settings.addLibraryPathsToRunEnv); m_ui.promptToStopRunControlCheckBox->setChecked(m_settings.prompToStopRunControl); + m_ui.automaticallyCreateRunConfiguration->setChecked(m_settings.automaticallyCreateRunConfigurations); m_ui.maxAppOutputBox->setValue(m_settings.maxAppOutputLines); m_ui.maxBuildOutputBox->setValue(m_settings.maxBuildOutputLines); m_ui.stopBeforeBuildComboBox->setCurrentIndex(static_cast(m_settings.stopBeforeBuild)); diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.ui b/src/plugins/projectexplorer/projectexplorersettingspage.ui index 0908129ae7e..2641f6bfdc4 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.ui +++ b/src/plugins/projectexplorer/projectexplorersettingspage.ui @@ -231,7 +231,17 @@ - + + + + Creates suitable run configurations automatically when setting up a new kit. + + + Create suitable run configurations automatically + + + + @@ -279,7 +289,7 @@ - + 0 @@ -312,7 +322,7 @@ - + 12 diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index 6baf96ba872..8b87bf525c3 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -25,25 +25,27 @@ #include "target.h" +#include "buildconfiguration.h" #include "buildinfo.h" +#include "buildmanager.h" #include "buildtargetinfo.h" +#include "deployconfiguration.h" #include "deploymentdata.h" +#include "devicesupport/devicemanager.h" #include "kit.h" #include "kitinformation.h" #include "kitmanager.h" -#include "buildconfiguration.h" -#include "deployconfiguration.h" #include "project.h" +#include "projectexplorer.h" +#include "projectexplorericons.h" +#include "projectexplorersettings.h" #include "runconfiguration.h" #include "session.h" -#include #include -#include -#include -#include + #include -#include + #include #include #include @@ -52,6 +54,8 @@ #include #include +#include + namespace { const char ACTIVE_BC_KEY[] = "ProjectExplorer.Target.ActiveBuildConfiguration"; const char BC_KEY_PREFIX[] = "ProjectExplorer.Target.BuildConfiguration."; @@ -574,41 +578,43 @@ void Target::updateDefaultRunConfigurations() } configuredCount -= toRemove.count(); - // Create new "automatic" RCs and put them into newConfigured/newUnconfigured - foreach (const RunConfigurationCreationInfo &item, creators) { - if (item.creationMode == RunConfigurationCreationInfo::ManualCreationOnly) - continue; - bool exists = false; - for (const RunConfigurationCreationInfo &ex : existing) { - if (ex.id == item.id && ex.buildKey == item.buildKey) - exists = true; - } - if (exists) - continue; - - RunConfiguration *rc = item.create(this); - if (!rc) - continue; - QTC_CHECK(rc->id() == item.id); - if (!rc->isConfigured()) - newUnconfigured << rc; - else - newConfigured << rc; - } - configuredCount += newConfigured.count(); - - // Decide what to do with the different categories: bool removeExistingUnconfigured = false; - if (configuredCount > 0) { - // new non-Custom Executable RCs were added - removeExistingUnconfigured = true; - qDeleteAll(newUnconfigured); - newUnconfigured.clear(); - } else { - // no new RCs, use old or new CERCs? - if (!existingUnconfigured.isEmpty()) { + if (ProjectExplorerPlugin::projectExplorerSettings().automaticallyCreateRunConfigurations) { + // Create new "automatic" RCs and put them into newConfigured/newUnconfigured + foreach (const RunConfigurationCreationInfo &item, creators) { + if (item.creationMode == RunConfigurationCreationInfo::ManualCreationOnly) + continue; + bool exists = false; + for (const RunConfigurationCreationInfo &ex : existing) { + if (ex.id == item.id && ex.buildKey == item.buildKey) + exists = true; + } + if (exists) + continue; + + RunConfiguration *rc = item.create(this); + if (!rc) + continue; + QTC_CHECK(rc->id() == item.id); + if (!rc->isConfigured()) + newUnconfigured << rc; + else + newConfigured << rc; + } + configuredCount += newConfigured.count(); + + // Decide what to do with the different categories: + if (configuredCount > 0) { + // new non-Custom Executable RCs were added + removeExistingUnconfigured = true; qDeleteAll(newUnconfigured); newUnconfigured.clear(); + } else { + // no new RCs, use old or new CERCs? + if (!existingUnconfigured.isEmpty()) { + qDeleteAll(newUnconfigured); + newUnconfigured.clear(); + } } }