diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index b66ebb70c6a392d85b1f3be4b68577b258bcbaae..d1fe107412d1fabe852164591d65a1fd1745d2d5 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -506,6 +506,10 @@ void CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader
         if (!copw.buildDirectory().isEmpty())
             setValue("all", "buildDirectory", copw.buildDirectory());
         //TODO save arguments somewhere copw.arguments()
+
+        MakeStep *cleanMakeStep = new MakeStep(this);
+        insertCleanStep(0, cleanMakeStep);
+        cleanMakeStep->setValue("clean", true);
     } else {
         // We have a user file, but we could still be missing the cbp file
         // TODO check that we have a cbp file and if not, open up a dialog ?
diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp
index 83e433c0ca65a0d6dd33860af7ee4f09bffa02ad..8209f3fc48d32e6ef4f5d99889a698b99f94b686 100644
--- a/src/plugins/cmakeprojectmanager/makestep.cpp
+++ b/src/plugins/cmakeprojectmanager/makestep.cpp
@@ -99,10 +99,14 @@ bool MakeStep::init(const QString &buildConfiguration)
     setCommand(buildConfiguration, "make"); // TODO give full path here?
 #endif // Q_OS_WIN
 
-    QStringList arguments = value(buildConfiguration, "buildTargets").toStringList();
-    arguments << additionalArguments(buildConfiguration);
-    setArguments(buildConfiguration, arguments); // TODO
-    setEnvironment(buildConfiguration, m_pro->environment(buildConfiguration));
+    if (value("clean").isValid() && value("clean").toBool())  {
+       setArguments(buildConfiguration, QStringList() << "clean");
+   } else {
+        QStringList arguments = value(buildConfiguration, "buildTargets").toStringList();
+        arguments << additionalArguments(buildConfiguration);
+        setArguments(buildConfiguration, arguments); // TODO
+        setEnvironment(buildConfiguration, m_pro->environment(buildConfiguration));
+    }
     return AbstractProcessStep::init(buildConfiguration);
 }