diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index 491ff4f085e98a635d76237f038432a8b7324c33..e087914cf30a7a12cb398ca0510d31e25c2dc08e 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -371,6 +371,10 @@ QString CustomExecutableRunConfiguration::executable() const
     return exec;
 }
 
+bool CustomExecutableRunConfiguration::isConfigured() const
+{
+    return !m_executable.isEmpty();
+}
 
 LocalApplicationRunConfiguration::RunMode CustomExecutableRunConfiguration::runMode() const
 {
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.h b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
index 9e056a981bbc185116c3b3569824e05403d1510b..c591a1e9ea8f7adde82ff5c4a5901f4baf5e6e9b 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.h
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
@@ -76,6 +76,10 @@ public:
      */
     QString executable() const;
 
+    /** Returns whether this runconfiguration ever was configured with a executable
+     */
+    bool isConfigured() const;
+
     /**
      * Returns only what is stored in the internal variable, not what we might
      * get after extending it with a path or asking the user. This value is
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 8c46d2c898084dcae71d563c8f5ca1874b16ea51..2399e015333166188f731976fd48df39319c867f 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -999,6 +999,18 @@ void Qt4Project::checkForNewApplicationProjects()
             if (!found) {
                 qt4Target->addRunConfigurationForPath(qt4proFile->path());
             }
+
+            // Remove unused CustomExecutableRCs:
+            if (target->runConfigurations().count() > 1) {
+                QList<RunConfiguration*> toRemove;
+                foreach (RunConfiguration * rc, target->runConfigurations()) {
+                    CustomExecutableRunConfiguration *cerc = qobject_cast<CustomExecutableRunConfiguration *>(rc);
+                    if (cerc && !cerc->isConfigured())
+                        toRemove.append(rc);
+                }
+                foreach (RunConfiguration *rc, toRemove)
+                    target->removeRunConfiguration(rc);
+            }
         }
     }
 }