diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index 78c8fad0c2db60b12f4876cbce98b9afcd312abb..b4c46d8e324f47cb74fb08dff1e98bd5ba01e0df 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -177,7 +177,7 @@ void Target::changeRunConfigurationEnabled()
 void Target::onBuildDirectoryChanged()
 {
     BuildConfiguration *bc = qobject_cast<BuildConfiguration *>(sender());
-    if (bc)
+    if (bc && activeBuildConfiguration() == bc)
         emit buildDirectoryChanged();
 }
 
@@ -238,6 +238,8 @@ void Target::addBuildConfiguration(BuildConfiguration *configuration)
             SLOT(changeEnvironment()));
     connect(configuration, SIGNAL(enabledChanged()),
             this, SLOT(changeBuildConfigurationEnabled()));
+    connect(configuration, SIGNAL(buildDirectoryChanged()),
+            SLOT(onBuildDirectoryChanged()));
 
     if (!activeBuildConfiguration())
         setActiveBuildConfiguration(configuration);
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
index 7ed940489ebd0ffb5ad14f02810d0fa11bc12512..f489f3b1a05ada4a463aa16ba720007afcce90a0 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
@@ -65,7 +65,6 @@ QbsBuildConfiguration::QbsBuildConfiguration(ProjectExplorer::Target *target) :
     connect(project(), SIGNAL(projectParsingStarted()), this, SIGNAL(enabledChanged()));
     connect(project(), SIGNAL(projectParsingDone(bool)), this, SIGNAL(enabledChanged()));
 
-    connect(this, SIGNAL(buildDirectoryChanged()), target, SLOT(onBuildDirectoryChanged()));
     ProjectExplorer::BuildStepList *bsl
             = stepList(Core::Id(ProjectExplorer::Constants::BUILDSTEPS_BUILD));
     connect(bsl, SIGNAL(stepInserted(int)), this, SLOT(buildStepInserted(int)));