diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 0c36f58bd17f913c5fd7cd2f6c40c9bea6f7e1db..99187607f9dbdad8b25b407fbaaa971e9d83c53a 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -157,7 +157,11 @@ QString QMakeStep::allArguments(bool shorted)
     arguments << moreArguments();
 
     QString args = Utils::QtcProcess::joinArgs(arguments);
+    // User arguments
     Utils::QtcProcess::addArgs(&args, m_userArgs);
+    // moreArgumentsAfter
+    foreach (const QString &arg, moreArgumentsAfter())
+        Utils::QtcProcess::addArg(&args, arg);
     return args;
 }
 
@@ -195,19 +199,26 @@ QStringList QMakeStep::moreArguments()
         }
     }
 
+
+    return arguments;
+}
+
+QStringList QMakeStep::moreArgumentsAfter()
+{
+    Qt4BuildConfiguration *bc = qt4BuildConfiguration();
     if (bc->qtVersion() && !bc->qtVersion()->supportsShadowBuilds()) {
         // We have a target which does not allow shadow building.
         // But we really don't want to have the build artefacts in the source dir
         // so we try to hack around it, to make the common cases work.
         // This is a HACK, remove once the symbian make generator supports
         // shadow building
-        arguments << QLatin1String("-after")
-                  << QLatin1String("OBJECTS_DIR=obj")
-                  << QLatin1String("MOC_DIR=moc")
-                  << QLatin1String("UI_DIR=ui")
-                  << QLatin1String("RCC_DIR=rcc");
+        return QStringList() << QLatin1String("-after")
+                             << QLatin1String("OBJECTS_DIR=obj")
+                             << QLatin1String("MOC_DIR=moc")
+                             << QLatin1String("UI_DIR=ui")
+                             << QLatin1String("RCC_DIR=rcc");
     }
-    return arguments;
+    return QStringList();
 }
 
 bool QMakeStep::init()
diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h
index 03d8151dc66db97131232082ea90bb524feba5cd..fce164d68bd268b42ea16c11eb98dd76aa301e11 100644
--- a/src/plugins/qt4projectmanager/qmakestep.h
+++ b/src/plugins/qt4projectmanager/qmakestep.h
@@ -100,6 +100,7 @@ public:
     // TODO clean up those functions
     QString allArguments(bool shorted = false);
     QStringList moreArguments();
+    QStringList moreArgumentsAfter();
     QStringList parserArguments();
     QString userArguments();
     QString mkspec();
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 9d172accd9a8e0c31cc463234e899eed9f589fc9..a92f19e72657a73a632f952d2413a843492f53fa 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -494,7 +494,7 @@ bool Qt4BuildConfiguration::compareToImportFrom(const QString &makefile)
                 // This copies the settings from userArgs to actualArgs (minus some we
                 // are not interested in), splitting them up into individual strings:
                 extractSpecFromArguments(&userArgs, workingDirectory, version, &actualArgs),
-                actualArgs += qs->moreArguments();
+                actualArgs = qs->moreArguments() + actualArgs + qs->moreArgumentsAfter();
                 QString actualSpec = qs->mkspec();
 
                 QString qmakeArgs = result.second;