diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 063ea83143ec477a2e41642750f2bc2262c02d7c..bba86b7e28b4c521ac7b341b0ca88aad039af6db 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -66,13 +66,14 @@ const char * const QMAKE_BS_ID("QtProjectManager.QMakeBuildStep");
 
 const char * const QMAKE_ARGUMENTS_KEY("QtProjectManager.QMakeBuildStep.QMakeArguments");
 const char * const QMAKE_FORCED_KEY("QtProjectManager.QMakeBuildStep.QMakeForced");
+const char * const QMAKE_QMLDEBUGLIBAUTO_KEY("QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto");
 const char * const QMAKE_QMLDEBUGLIB_KEY("QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary");
 }
 
 QMakeStep::QMakeStep(BuildStepList *bsl) :
     AbstractProcessStep(bsl, QLatin1String(QMAKE_BS_ID)),
     m_forced(false),
-    m_linkQmlDebuggingLibrary(false)
+    m_linkQmlDebuggingLibrary(DebugLink)
 {
     ctor();
 }
@@ -80,7 +81,7 @@ QMakeStep::QMakeStep(BuildStepList *bsl) :
 QMakeStep::QMakeStep(BuildStepList *bsl, const QString &id) :
     AbstractProcessStep(bsl, id),
     m_forced(false),
-    m_linkQmlDebuggingLibrary(false)
+    m_linkQmlDebuggingLibrary(DebugLink)
 {
     ctor();
 }
@@ -173,7 +174,7 @@ QStringList QMakeStep::moreArguments()
         arguments << QLatin1String("-unix");
 #endif
 
-    if (m_linkQmlDebuggingLibrary && bc->qtVersion()) {
+    if (linkQmlDebuggingLibrary() && bc->qtVersion()) {
         if (!bc->qtVersion()->needsQmlDebuggingLibrary()) {
             // This Qt version has the QML debugging services built in, however
             // they still need to be enabled at compile time
@@ -391,14 +392,19 @@ bool QMakeStep::isQmlDebuggingLibrarySupported(QString *reason) const
 
 bool QMakeStep::linkQmlDebuggingLibrary() const
 {
-    return m_linkQmlDebuggingLibrary;
+    if (m_linkQmlDebuggingLibrary == DoLink)
+        return true;
+    if (m_linkQmlDebuggingLibrary == DoNotLink)
+        return false;
+    return (qt4BuildConfiguration()->buildType() & BuildConfiguration::Debug);
 }
 
 void QMakeStep::setLinkQmlDebuggingLibrary(bool enable)
 {
-    if (m_linkQmlDebuggingLibrary == enable)
+    if ((enable && (m_linkQmlDebuggingLibrary == DoLink))
+            || (!enable && (m_linkQmlDebuggingLibrary == DoNotLink)))
         return;
-    m_linkQmlDebuggingLibrary = enable;
+    m_linkQmlDebuggingLibrary = enable ? DoLink : DoNotLink;
 
     emit linkQmlDebuggingLibraryChanged();
 
@@ -424,7 +430,8 @@ QVariantMap QMakeStep::toMap() const
 {
     QVariantMap map(AbstractProcessStep::toMap());
     map.insert(QLatin1String(QMAKE_ARGUMENTS_KEY), m_userArgs);
-    map.insert(QLatin1String(QMAKE_QMLDEBUGLIB_KEY), m_linkQmlDebuggingLibrary);
+    map.insert(QLatin1String(QMAKE_QMLDEBUGLIBAUTO_KEY), m_linkQmlDebuggingLibrary == DebugLink);
+    map.insert(QLatin1String(QMAKE_QMLDEBUGLIB_KEY), m_linkQmlDebuggingLibrary == DoLink);
     map.insert(QLatin1String(QMAKE_FORCED_KEY), m_forced);
     return map;
 }
@@ -433,7 +440,16 @@ bool QMakeStep::fromMap(const QVariantMap &map)
 {
     m_userArgs = map.value(QLatin1String(QMAKE_ARGUMENTS_KEY)).toString();
     m_forced = map.value(QLatin1String(QMAKE_FORCED_KEY), false).toBool();
-    m_linkQmlDebuggingLibrary = map.value(QLatin1String(QMAKE_QMLDEBUGLIB_KEY), false).toBool();
+    if (map.value(QLatin1String(QMAKE_QMLDEBUGLIBAUTO_KEY), false).toBool()) {
+        m_linkQmlDebuggingLibrary = DebugLink;
+    } else {
+        if (map.value(QLatin1String(QMAKE_QMLDEBUGLIB_KEY), false).toBool()) {
+            m_linkQmlDebuggingLibrary = DoLink;
+        } else {
+            m_linkQmlDebuggingLibrary = DoNotLink;
+        }
+    }
+
     return BuildStep::fromMap(map);
 }
 
diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h
index 2d41cddfbb1bc59567f6e1a438dd70bdc0bb4080..a9d0a131d79dce78ce7a277af656811a2056923a 100644
--- a/src/plugins/qt4projectmanager/qmakestep.h
+++ b/src/plugins/qt4projectmanager/qmakestep.h
@@ -76,6 +76,12 @@ class QMakeStep : public ProjectExplorer::AbstractProcessStep
     Q_OBJECT
     friend class Internal::QMakeStepFactory;
 
+    enum QmlLibraryLink {
+        DoNotLink = 0,
+        DoLink,
+        DebugLink
+    };
+
 public:
     explicit QMakeStep(ProjectExplorer::BuildStepList *parent);
     virtual ~QMakeStep();
@@ -120,7 +126,7 @@ private:
     bool m_forced;
     bool m_needToRunQMake; // set in init(), read in run()
     QString m_userArgs;
-    bool m_linkQmlDebuggingLibrary;
+    QmlLibraryLink m_linkQmlDebuggingLibrary;
     bool m_scriptTemplate;
     QList<ProjectExplorer::Task> m_tasks;
 };