diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
index 68b514d6f13..581adade966 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp
@@ -87,7 +87,7 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl) :
if (m_buildTarget.isEmpty())
setBuildTarget(defaultBuildTarget());
- setLowPriority();
+ setLowPriorityIfConfigured();
connect(target(), &Target::kitChanged, this, &CMakeBuildStep::cmakeCommandChanged);
connect(project(), &Project::parsingFinished,
diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp
index de80337d55e..ce16dea25f7 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.cpp
+++ b/src/plugins/projectexplorer/abstractprocessstep.cpp
@@ -30,6 +30,8 @@
#include "ioutputparser.h"
#include "processparameters.h"
#include "project.h"
+#include "projectexplorer.h"
+#include "projectexplorersettings.h"
#include "target.h"
#include "task.h"
@@ -249,9 +251,10 @@ void AbstractProcessStep::doRun()
processStarted();
}
-void AbstractProcessStep::setLowPriority()
+void AbstractProcessStep::setLowPriorityIfConfigured()
{
- d->m_lowPriority = true;
+ if (ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority)
+ d->m_lowPriority = true;
}
void AbstractProcessStep::doCancel()
diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h
index 3cc7aa8bf50..a4a0350b20c 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.h
+++ b/src/plugins/projectexplorer/abstractprocessstep.h
@@ -57,7 +57,7 @@ protected:
~AbstractProcessStep() override;
bool init() override;
void doRun() override;
- void setLowPriority();
+ void setLowPriorityIfConfigured();
virtual void finish(bool success);
virtual void processStarted();
diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp
index 7bfcc0655be..d4acb5629d8 100644
--- a/src/plugins/projectexplorer/makestep.cpp
+++ b/src/plugins/projectexplorer/makestep.cpp
@@ -65,7 +65,7 @@ MakeStep::MakeStep(BuildStepList *parent, Core::Id id)
m_userJobCount(defaultJobCount())
{
setDefaultDisplayName(defaultDisplayName());
- setLowPriority();
+ setLowPriorityIfConfigured();
}
void MakeStep::setBuildTarget(const QString &buildTarget)
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index be4a5b65cbd..6c33f24370a 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -256,6 +256,7 @@ const char CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY[]
const char CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/ClearIssuesOnRebuild";
const char ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY[]
= "ProjectExplorer/Settings/AbortBuildAllOnError";
+const char LOW_BUILD_PRIORITY_SETTINGS_KEY[] = "ProjectExplorer/Settings/LowBuildPriority";
} // namespace Constants
@@ -1395,6 +1396,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
= s->value(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY, true).toBool();
dd->m_projectExplorerSettings.abortBuildAllOnError
= s->value(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, true).toBool();
+ dd->m_projectExplorerSettings.lowBuildPriority
+ = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, false).toBool();
dd->m_projectExplorerSettings.buildDirectoryTemplate
= s->value(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY).toString();
if (dd->m_projectExplorerSettings.buildDirectoryTemplate.isEmpty())
@@ -2002,6 +2005,8 @@ void ProjectExplorerPluginPrivate::savePersistentSettings()
dd->m_projectExplorerSettings.clearIssuesOnRebuild);
s->setValue(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY,
dd->m_projectExplorerSettings.abortBuildAllOnError);
+ s->setValue(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.lowBuildPriority);
s->setValue(QLatin1String("ProjectExplorer/Settings/AutomaticallyCreateRunConfigurations"),
dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations);
s->setValue(QLatin1String("ProjectExplorer/Settings/EnvironmentId"), dd->m_projectExplorerSettings.environmentId.toByteArray());
diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h
index 6472725db6b..920f849fe11 100644
--- a/src/plugins/projectexplorer/projectexplorersettings.h
+++ b/src/plugins/projectexplorer/projectexplorersettings.h
@@ -52,6 +52,7 @@ public:
bool closeSourceFilesWithProject = true;
bool clearIssuesOnRebuild = true;
bool abortBuildAllOnError = true;
+ bool lowBuildPriority = false;
StopBeforeBuild stopBeforeBuild = StopBeforeBuild::StopNone;
TerminalMode terminalMode = TerminalMode::Smart;
QString buildDirectoryTemplate;
@@ -78,6 +79,7 @@ inline bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerS
&& p1.closeSourceFilesWithProject == p2.closeSourceFilesWithProject
&& p1.clearIssuesOnRebuild == p2.clearIssuesOnRebuild
&& p1.abortBuildAllOnError == p2.abortBuildAllOnError
+ && p1.lowBuildPriority == p2.lowBuildPriority
&& p1.buildDirectoryTemplate == p2.buildDirectoryTemplate;
}
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
index 78727aa08b6..5251eff14c8 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
@@ -109,6 +109,7 @@ ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const
m_settings.closeSourceFilesWithProject = m_ui.closeSourceFilesCheckBox->isChecked();
m_settings.clearIssuesOnRebuild = m_ui.clearIssuesCheckBox->isChecked();
m_settings.abortBuildAllOnError = m_ui.abortBuildAllOnErrorCheckBox->isChecked();
+ m_settings.lowBuildPriority = m_ui.lowBuildPriorityCheckBox->isChecked();
m_settings.buildDirectoryTemplate = buildDirectoryTemplate();
return m_settings;
}
@@ -128,6 +129,7 @@ void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings &
m_ui.closeSourceFilesCheckBox->setChecked(m_settings.closeSourceFilesWithProject);
m_ui.clearIssuesCheckBox->setChecked(m_settings.clearIssuesOnRebuild);
m_ui.abortBuildAllOnErrorCheckBox->setChecked(m_settings.abortBuildAllOnError);
+ m_ui.lowBuildPriorityCheckBox->setChecked(m_settings.lowBuildPriority);
setBuildDirectoryTemplate(pes.buildDirectoryTemplate);
}
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.ui b/src/plugins/projectexplorer/projectexplorersettingspage.ui
index dc826601127..80520451138 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.ui
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.ui
@@ -148,6 +148,16 @@
+ -
+
+
+ Enable this if your system becomes unresponsive while building.
+
+
+ Start build processes with low priority
+
+
+
-
-
@@ -310,6 +320,7 @@
addLibraryPathsToRunEnvCheckBox
clearIssuesCheckBox
abortBuildAllOnErrorCheckBox
+ lowBuildPriorityCheckBox
-
diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp
index 84b756012f3..44b96519fdd 100644
--- a/src/plugins/qmakeprojectmanager/qmakestep.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp
@@ -76,7 +76,7 @@ QMakeStep::QMakeStep(BuildStepList *bsl) : AbstractProcessStep(bsl, Constants::Q
{
//: QMakeStep default display name
setDefaultDisplayName(tr("qmake"));
- setLowPriority();
+ setLowPriorityIfConfigured();
}
QmakeBuildConfiguration *QMakeStep::qmakeBuildConfiguration() const