diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index c4f423d3cbcefaa920d79bf62229c3f82285e460..8b29c91f8370aeea8f0b226427b8fe4d8f719130 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -114,6 +114,7 @@ void CMakeProject::slotActiveBuildConfiguration()
 
 void CMakeProject::fileChanged(const QString &fileName)
 {
+    Q_UNUSED(fileName)
     if (m_insideFileChanged== true)
         return;
     m_insideFileChanged = true;
@@ -537,7 +538,7 @@ QList<ProjectExplorer::BuildConfigWidget*> CMakeProject::subConfigWidgets()
     return list;
 }
 
- void CMakeProject::newBuildConfiguration(const QString &buildConfiguration)
+ bool CMakeProject::newBuildConfiguration(const QString &buildConfiguration)
  {
      // Default to all
      if (targets().contains("all"))
@@ -548,7 +549,9 @@ QList<ProjectExplorer::BuildConfigWidget*> CMakeProject::subConfigWidgets()
         setValue(buildConfiguration, "buildDirectory", copw.buildDirectory());
         setValue(buildConfiguration, "msvcVersion", copw.msvcVersion());
         parseCMakeLists();
+        return true;
     }
+    return false;
  }
 
 ProjectExplorer::ProjectNode *CMakeProject::rootProjectNode() const
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index f267b95a818fba3a82f33999e1cf5d09b3af0ee5..c9bbbfb903e5c175ffaf45650b5bf50a6e09b9f2 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -94,7 +94,7 @@ public:
 
     // This method is called for new build configurations
     // You should probably set some default values in this method
-    virtual void newBuildConfiguration(const QString &buildConfiguration);
+    virtual bool newBuildConfiguration(const QString &buildConfiguration);
 
     virtual ProjectExplorer::ProjectNode *rootProjectNode() const;
 
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index d012914dd906b502dc4c51f82b00b28a3cefe4b2..71a785493927bb394f44f9e6f8354092c35057ff 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -437,9 +437,10 @@ QList<ProjectExplorer::BuildConfigWidget*> GenericProject::subConfigWidgets()
     return QList<ProjectExplorer::BuildConfigWidget*>();
 }
 
- void GenericProject::newBuildConfiguration(const QString &buildConfiguration)
+ bool GenericProject::newBuildConfiguration(const QString &buildConfiguration)
  {
      makeStep()->setBuildTarget(buildConfiguration, "all", true);
+     return true;
  }
 
 GenericProjectNode *GenericProject::rootProjectNode() const
diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h
index 686ea7b9dd024731662d59657de178669d628026..8ca62c83c5b76b80ed02f929b1d3ff231571055d 100644
--- a/src/plugins/genericprojectmanager/genericproject.h
+++ b/src/plugins/genericprojectmanager/genericproject.h
@@ -82,7 +82,7 @@ public:
     virtual ProjectExplorer::BuildConfigWidget *createConfigWidget();
     virtual QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
-    virtual void newBuildConfiguration(const QString &buildConfiguration);
+    virtual bool newBuildConfiguration(const QString &buildConfiguration);
     virtual GenericProjectNode *rootProjectNode() const;
     virtual QStringList files(FilesMode fileMode) const;
 
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index 67e2cea81394ff81935c7bd1805ef6516fd9f3d7..3fd4c8999ac7e0b8e68b5dcebc7d5b3c667410e6 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -282,12 +282,13 @@ void BuildSettingsWidget::createConfiguration()
         newDisplayName += QString::number(i);
     }
 
-    m_project->addBuildConfiguration(newBuildConfiguration);
-    m_project->setDisplayNameFor(newBuildConfiguration, newDisplayName);
-    m_project->newBuildConfiguration(newBuildConfiguration);
-    m_buildConfiguration = newBuildConfiguration;
+    if (m_project->newBuildConfiguration(newBuildConfiguration)) {
+        m_project->addBuildConfiguration(newBuildConfiguration);
+        m_project->setDisplayNameFor(newBuildConfiguration, newDisplayName);
+        m_buildConfiguration = newBuildConfiguration;
 
-    updateBuildSettings();
+        updateBuildSettings();
+    }
 }
 
 void BuildSettingsWidget::cloneConfiguration()
diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index ad36023c2d8a8a1684611b8023b19d99d3362be2..456646c970d6a778b2fa4dcabdb16c95218ea883 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -132,7 +132,7 @@ public:
     /* This method is called for new build configurations. You should probably
      * set some default values in this method.
      */
-    virtual void newBuildConfiguration(const QString &buildConfiguration) = 0;
+    virtual bool newBuildConfiguration(const QString &buildConfiguration) = 0;
 
     virtual ProjectNode *rootProjectNode() const = 0;
 
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index 2d61bd50366153855ede723cdc2b2cc4c37201cb..99fe21c147f91fe6e605dd5d41906509941257b7 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -214,8 +214,9 @@ QList<ProjectExplorer::BuildConfigWidget*> QmlProject::subConfigWidgets()
     return QList<ProjectExplorer::BuildConfigWidget*>();
 }
 
-void QmlProject::newBuildConfiguration(const QString &)
+bool QmlProject::newBuildConfiguration(const QString &)
 {
+    return true;
 }
 
 QmlProjectNode *QmlProject::rootProjectNode() const
diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h
index 08e1164717f1e02859ececd45ad346f31b5d77cd..df24dbfb3821000cca821be2f0c4adc815b385df 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.h
+++ b/src/plugins/qmlprojectmanager/qmlproject.h
@@ -76,7 +76,7 @@ public:
     virtual ProjectExplorer::BuildConfigWidget *createConfigWidget();
     virtual QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
-    virtual void newBuildConfiguration(const QString &buildConfiguration);
+    virtual bool newBuildConfiguration(const QString &buildConfiguration);
     virtual QmlProjectNode *rootProjectNode() const;
     virtual QStringList files(FilesMode fileMode) const;
 
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index fe7543dfc925074e66d6a594aa03e14c30899e3c..6a3164f5ba5cdd5a2d7cfd1e68bde508f6c62f47 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -759,9 +759,10 @@ void Qt4Project::addDefaultBuild()
     }
 }
 
-void Qt4Project::newBuildConfiguration(const QString &buildConfiguration)
+bool Qt4Project::newBuildConfiguration(const QString &buildConfiguration)
 {
     Q_UNUSED(buildConfiguration)
+    return true;
 }
 
 void Qt4Project::proFileParseError(const QString &errorMessage)
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index 75efbc885842bbc250b6dd3ca80377d3ca37aa52..5232d3e6c79ef8908348486c3a2d02ddba6ef7f5 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -170,7 +170,7 @@ public:
     QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
     void setQtVersion(const QString &buildConfiguration, int id);
-    virtual void newBuildConfiguration(const QString &buildConfiguration);
+    virtual bool newBuildConfiguration(const QString &buildConfiguration);
 
     QList<Internal::Qt4ProFileNode *> applicationProFiles() const;