diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index c54b75a1e2db1c96e88dc7b346638b04f7f60dad..8795b97d5b745103776025be3ec7bb790e3e830e 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -768,11 +768,15 @@ bool ProFileEvaluator::Private::visitProValue(ProValue *value)
         case ProVariable::RemoveOperator:       // -=
             if (!m_cumulative) {
                 if (!m_skipLevel) {
-                    removeEach(&m_valuemap, varName, v);
-                    removeEach(&m_filevaluemap[currentProFile()], varName, v);
+                    // the insertUnique is a hack for the moment to fix the
+                    // CONFIG -= app_bundle problem on Mac (add it to a variable -CONFIG as was done before)
+                    if (removeEach(&m_valuemap, varName, v) == 0)
+                        insertUnique(&m_valuemap, QString("-%1").arg(varName), v);
+                    if (removeEach(&m_filevaluemap[currentProFile()], varName, v) == 0)
+                        insertUnique(&m_filevaluemap[currentProFile()], QString("-%1").arg(varName), v);
                 }
             } else if (!m_skipLevel) {
-                // this is a hack for the moment to fix the
+                // the insertUnique is a hack for the moment to fix the
                 // CONFIG -= app_bundle problem on Mac (add it to a variable -CONFIG as was done before)
                 insertUnique(&m_valuemap, QString("-%1").arg(varName), v);
                 insertUnique(&m_filevaluemap[currentProFile()], QString("-%1").arg(varName), v);
diff --git a/src/shared/proparser/proparserutils.h b/src/shared/proparser/proparserutils.h
index 7c751c9c273257ef77ac5c2933498e396a3c1b9f..41c62c88191a59243bb895823d91e9d3ea601829 100644
--- a/src/shared/proparser/proparserutils.h
+++ b/src/shared/proparser/proparserutils.h
@@ -140,12 +140,14 @@ static void insertUnique(QHash<QString, QStringList> *map,
             sl.append(str);
 }
 
-static void removeEach(QHash<QString, QStringList> *map,
+static int removeEach(QHash<QString, QStringList> *map,
     const QString &key, const QStringList &value)
 {
+    int count = 0;
     QStringList &sl = (*map)[key];
     foreach (const QString &str, value)
-        sl.removeAll(str);
+        count += sl.removeAll(str);
+    return count;
 }
 
 /*