diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp index 8ea2db675e6..b721a606ac1 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp @@ -59,15 +59,8 @@ AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(Target *parent, Core::I // / is used so the un-changed check in setBuildDirectory() works correctly. // The leading / is to avoid the relative the path expansion in BuildConfiguration::buildDirectory. setBuildDirectory(Utils::FileName::fromString("/")); + setBuildDirectoryHistoryCompleter("AutoTools.BuildDir.History"); setConfigWidgetDisplayName(tr("Autotools Manager")); - - BaseStringAspect *bd = buildDirectoryAspect(); - bd->setLabelText(tr("Build directory:")); - bd->setDisplayStyle(BaseStringAspect::PathChooserDisplay); - bd->setExpectedKind(PathChooser::Directory); - bd->setBaseFileName(parent->project()->projectDirectory()); - bd->setEnvironment(environment()); - bd->setHistoryCompleter("AutoTools.BuildDir.History"); } void AutotoolsBuildConfiguration::initialize(const BuildInfo &info) diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index e3283c27e9c..764799f8da3 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -53,14 +53,7 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, Core::Id id : BuildConfiguration(parent, id) { setConfigWidgetDisplayName(tr("Generic Manager")); - - BaseStringAspect *bd = buildDirectoryAspect(); - bd->setDisplayStyle(BaseStringAspect::PathChooserDisplay); - bd->setExpectedKind(PathChooser::Directory); - bd->setHistoryCompleter("Generic.BuildDir.History"); - bd->setLabelText(tr("Build directory:")); - bd->setBaseFileName(parent->project()->projectDirectory()); - bd->setEnvironment(environment()); + setBuildDirectoryHistoryCompleter("Generic.BuildDir.History"); updateCacheAndEmitEnvironmentChanged(); } diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 87bcc0d7000..df6bee13842 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -42,11 +42,11 @@ #include -#include -#include #include -#include +#include #include +#include +#include #include #include @@ -88,6 +88,13 @@ BuildConfiguration::BuildConfiguration(Target *target, Core::Id id) m_buildDirectoryAspect = addAspect(); m_buildDirectoryAspect->setSettingsKey(BUILDDIRECTORY_KEY); + m_buildDirectoryAspect->setLabelText(tr("Build directory:")); + m_buildDirectoryAspect->setDisplayStyle(BaseStringAspect::PathChooserDisplay); + m_buildDirectoryAspect->setExpectedKind(Utils::PathChooser::Directory); + m_buildDirectoryAspect->setBaseFileName(target->project()->projectDirectory()); + m_buildDirectoryAspect->setEnvironment(environment()); + connect(m_buildDirectoryAspect, &BaseStringAspect::changed, + this, &BuildConfiguration::buildDirectoryChanged); connect(this, &BuildConfiguration::environmentChanged, this, [this] { m_buildDirectoryAspect->setEnvironment(environment()); @@ -230,6 +237,11 @@ void BuildConfiguration::setConfigWidgetDisplayName(const QString &display) m_configWidgetDisplayName = display; } +void BuildConfiguration::setBuildDirectoryHistoryCompleter(const QString &history) +{ + m_buildDirectoryAspect->setHistoryCompleter(history); +} + Target *BuildConfiguration::target() const { return static_cast(parent()); diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 93db3a31399..7739cd5304f 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -101,6 +101,7 @@ public: ProjectExplorer::BaseStringAspect *buildDirectoryAspect() const; void setConfigWidgetDisplayName(const QString &display); + void setBuildDirectoryHistoryCompleter(const QString &history); signals: void environmentChanged();