diff --git a/qtcreator.qbp b/qtcreator.qbp
index a8c0c2e8627a53b5cecd5c0b58451690820788fe..6fa81f2a3436f0b997212280d000e76e85cd1e03 100644
--- a/qtcreator.qbp
+++ b/qtcreator.qbp
@@ -6,7 +6,10 @@ Project {
     property string ide_version_minor: '5'
     property string ide_version_release: '83'
     property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release
-    property var additionalCppDefines: [ 'IDE_LIBRARY_BASENAME="lib"' ]
+    property var additionalCppDefines: [
+        'IDE_LIBRARY_BASENAME="lib"',
+        "QT_DISABLE_DEPRECATED_BEFORE=0x040900"
+    ]
     moduleSearchPaths: "qbs"
 
     references: [
diff --git a/src/libs/3rdparty/botan/botan.qbs b/src/libs/3rdparty/botan/botan.qbs
index 5cd779488aa9ae116607f77f45bb59a4f619d185..ee8afc1d0337d8f6e9fb814cbe494a4f3846e563 100644
--- a/src/libs/3rdparty/botan/botan.qbs
+++ b/src/libs/3rdparty/botan/botan.qbs
@@ -44,7 +44,7 @@ QtcLibrary {
                 "BOTAN_TARGET_OS_HAS_WIN32_VIRTUAL_LOCK", "BOTAN_HAS_DYNAMICALLY_LOADED_ENGINE",
                 "BOTAN_HAS_DYNAMIC_LOADER", "BOTAN_HAS_ENTROPY_SRC_CAPI",
                 "BOTAN_HAS_ENTROPY_SRC_WIN32", "BOTAN_HAS_MUTEX_WIN32")
-        return result
+        return base.concat(result)
     }
 
     Properties {
diff --git a/src/libs/QtcLibrary.qbs b/src/libs/QtcLibrary.qbs
index efacb4adf12b0d0266577aae4153d233b90103ae..1145ddd40e563553cbf5e5b4db7d4318d305f1f6 100644
--- a/src/libs/QtcLibrary.qbs
+++ b/src/libs/QtcLibrary.qbs
@@ -2,6 +2,7 @@ import qbs.base 1.0
 
 DynamicLibrary {
     Depends { name: "cpp" }
+    cpp.defines: project.additionalCppDefines
     cpp.linkerFlags: {
         if (qbs.buildVariant == "release" && (qbs.toolchain == "gcc" || qbs.toolchain == "mingw"))
             return ["-Wl,-s"]
diff --git a/src/libs/aggregation/aggregation.qbs b/src/libs/aggregation/aggregation.qbs
index ac34d281dbec3fe8670fddd4f0557340c49135d4..9edc3f45f95e086aa4f62dad51f78db20735a183 100644
--- a/src/libs/aggregation/aggregation.qbs
+++ b/src/libs/aggregation/aggregation.qbs
@@ -8,9 +8,6 @@ QtcLibrary {
         ".",
         ".."
     ]
-    cpp.defines: [
-        "AGGREGATION_LIBRARY"
-    ]
 
     Depends { name: "cpp" }
     Depends { name: "Qt.core" }
diff --git a/src/libs/cplusplus/cplusplus.qbs b/src/libs/cplusplus/cplusplus.qbs
index 31b17d3d64f9a94eedf9992f653e69a50cbab3f6..6038fc6a2c4a9aaace72ec940aabc3b502ba1e16 100644
--- a/src/libs/cplusplus/cplusplus.qbs
+++ b/src/libs/cplusplus/cplusplus.qbs
@@ -10,10 +10,10 @@ QtcLibrary {
         "../3rdparty/cplusplus",
         "../../plugins"
     ]
-    cpp.defines: [
+    cpp.defines: base.concat([
         "NDEBUG",
         "CPLUSPLUS_BUILD_LIB"
-    ]
+    ])
     cpp.optimization: "fast"
 
     Depends { name: "cpp" }
diff --git a/src/libs/extensionsystem/extensionsystem.qbs b/src/libs/extensionsystem/extensionsystem.qbs
index 3c36c327bb4dbe58dbfb4fb997f25a225d956416..bbdd8b74b312d3f84f7a7109a7fa083cc2f0a704 100644
--- a/src/libs/extensionsystem/extensionsystem.qbs
+++ b/src/libs/extensionsystem/extensionsystem.qbs
@@ -8,10 +8,10 @@ QtcLibrary {
         ".",
         ".."
     ]
-    cpp.defines: [
+    cpp.defines: base.concat([
         "EXTENSIONSYSTEM_LIBRARY",
         "IDE_TEST_DIR=\".\""
-    ]
+    ])
 
     Depends { name: "cpp" }
     Depends { name: "Qt"; submodules: ["core", "widgets"] }
diff --git a/src/libs/glsl/glsl.qbs b/src/libs/glsl/glsl.qbs
index 506b709c2525080e43cf8dbf584a17469e613738..7ee3557673dbd341d897b855f23be03b0ac2b273 100644
--- a/src/libs/glsl/glsl.qbs
+++ b/src/libs/glsl/glsl.qbs
@@ -8,10 +8,10 @@ QtcLibrary {
         ".",
         ".."
     ]
-    cpp.defines: [
+    cpp.defines: base.concat([
         "QT_CREATOR",
         "GLSL_BUILD_LIB"
-    ]
+    ])
 
     Depends { name: "cpp" }
     Depends { name: "Qt.gui" }
diff --git a/src/libs/languageutils/languageutils.qbs b/src/libs/languageutils/languageutils.qbs
index 4ac659b630401393bb7947182b0d83139bb2e066..abd23f95c86e7b6ab90ccd98b65b6c0675bd3e7c 100644
--- a/src/libs/languageutils/languageutils.qbs
+++ b/src/libs/languageutils/languageutils.qbs
@@ -9,10 +9,10 @@ QtcLibrary {
         "..",
         "../3rdparty/cplusplus"
     ]
-    cpp.defines: [
+    cpp.defines: base.concat([
         "QT_CREATOR",
         "LANGUAGEUTILS_BUILD_DIR"
-    ]
+    ])
     cpp.optimization: "fast"
 
     Depends { name: "cpp" }
diff --git a/src/libs/qmldebug/qmldebug.qbs b/src/libs/qmldebug/qmldebug.qbs
index 45fb5ecfa9a02fb1d63a13a38bab3e680d994cb4..c9fa8c01a4dac189f73daf9318639c6589466223 100644
--- a/src/libs/qmldebug/qmldebug.qbs
+++ b/src/libs/qmldebug/qmldebug.qbs
@@ -8,9 +8,9 @@ QtcLibrary {
         ".",
         ".."
     ]
-    cpp.defines: [
+    cpp.defines: base.concat([
         "QMLDEBUG_LIB"
-    ]
+    ])
 
     Depends { name: "cpp" }
     Depends { name: "Qt"; submodules: ["gui", "network"] }
diff --git a/src/libs/qmleditorwidgets/qmleditorwidgets.qbs b/src/libs/qmleditorwidgets/qmleditorwidgets.qbs
index e0b057e759de299ad7c9bc60455950ccea100dd6..7310ed8d037e9aeca134be4705047aa4550a1734 100644
--- a/src/libs/qmleditorwidgets/qmleditorwidgets.qbs
+++ b/src/libs/qmleditorwidgets/qmleditorwidgets.qbs
@@ -9,11 +9,11 @@ QtcLibrary {
         "..",
         "easingpane"
     ]
-    cpp.defines: [
+    cpp.defines: base.concat([
         "QWEAKPOINTER_ENABLE_ARROW",
         "BUILD_QMLEDITORWIDGETS_LIB",
         "QT_CREATOR"
-    ]
+    ])
     cpp.optimization: "fast"
 
     Depends { name: "cpp" }
diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs
index 68e2e5666be7c6944e2a00f642c59a73dadf216d..d7b556b06bdb8496ba950d72a9361a40f2d040f3 100644
--- a/src/libs/qmljs/qmljs.qbs
+++ b/src/libs/qmljs/qmljs.qbs
@@ -9,10 +9,10 @@ QtcLibrary {
         "..",
         "parser"
     ]
-    cpp.defines: [
+    cpp.defines: base.concat([
         "QMLJS_BUILD_DIR",
         "QT_CREATOR"
-    ]
+    ])
     cpp.optimization: "fast"
 
     Depends { name: "Utils" }
diff --git a/src/libs/qtcomponents/styleitem/styleitem.qbs b/src/libs/qtcomponents/styleitem/styleitem.qbs
index 1ab8d83e5cd27e1667b13347fda4f57db1f501fa..e4e8d45e36522d3f2996a661e43d5fe070fde159 100644
--- a/src/libs/qtcomponents/styleitem/styleitem.qbs
+++ b/src/libs/qtcomponents/styleitem/styleitem.qbs
@@ -7,6 +7,8 @@ DynamicLibrary {
     Depends { name: "cpp" }
     Depends { name: "Qt"; submodules: ["core", "widgets", "quick1", "script"] }
 
+    cpp.defines: project.additionalCppDefines
+
     files: [
         "qdeclarativefolderlistmodel.cpp",
         "qdeclarativefolderlistmodel.h",
diff --git a/src/libs/ssh/ssh.qbs b/src/libs/ssh/ssh.qbs
index cb8603327c35de6e5faf24a614e2306604f58e31..755bb221b395a83f235794d192abb38be74a6034 100644
--- a/src/libs/ssh/ssh.qbs
+++ b/src/libs/ssh/ssh.qbs
@@ -4,7 +4,7 @@ import "../QtcLibrary.qbs" as QtcLibrary
 QtcLibrary {
     name: "QtcSsh"
 
-    cpp.defines: ["QSSH_LIBRARY"]
+    cpp.defines: base.concat(["QSSH_LIBRARY"])
     cpp.includePaths: [
         ".",
         "..",
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index 10e8d284225e0628902a814d10c2619a194a6fdb..4f0ed57b975de93134730c60da22ae725bfa631b 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -4,7 +4,7 @@ import "../QtcLibrary.qbs" as QtcLibrary
 QtcLibrary {
     name: "Utils"
 
-    cpp.defines: ["QTCREATOR_UTILS_LIB"]
+    cpp.defines: base.concat(["QTCREATOR_UTILS_LIB"])
     cpp.includePaths: [
         ".",
         "..",
diff --git a/src/libs/zeroconf/zeroconf.qbs b/src/libs/zeroconf/zeroconf.qbs
index a3e3d931a546cedafc5bfe5ff321eb00616d314e..3da7b7a61b27692373e066dbba7d26277d112d7e 100644
--- a/src/libs/zeroconf/zeroconf.qbs
+++ b/src/libs/zeroconf/zeroconf.qbs
@@ -8,14 +8,13 @@ QtcLibrary {
     Depends { name: "Qt.network" }
 
     cpp.includePaths: "."
-    cpp.defines: ["ZEROCONF_LIBRARY"]
     Properties {
         condition: qbs.targetOS == "windows"
         cpp.dynamicLibraries:  "ws2_32"
     }
     Properties {
         condition: qbs.targetOS == "linux"
-        cpp.defines: outer.concat([
+        cpp.defines: base.concat([
             "_GNU_SOURCE",
             "HAVE_IPV6",
             "USES_NETLINK",
diff --git a/src/plugins/QtcPlugin.qbs b/src/plugins/QtcPlugin.qbs
index 83b33f78d1ce10a04804c08be6b4f3a0a9da0d37..606e798000d5231ad39c01b1f3701ddae5095526 100644
--- a/src/plugins/QtcPlugin.qbs
+++ b/src/plugins/QtcPlugin.qbs
@@ -21,7 +21,7 @@ Product {
 
     Depends { name: "pluginspec" }
     Depends { name: "cpp" }
-    cpp.defines: [name.toUpperCase() + "_LIBRARY"]
+    cpp.defines: project.additionalCppDefines.concat([name.toUpperCase() + "_LIBRARY"])
     cpp.rpaths: ["$ORIGIN/../../.."]
     cpp.linkerFlags: {
         if (qbs.buildVariant == "release" && (qbs.toolchain == "gcc" || qbs.toolchain == "mingw"))
diff --git a/src/plugins/analyzerbase/analyzerbase.qbs b/src/plugins/analyzerbase/analyzerbase.qbs
index 548fad250f23b7408ddd865c84e08220b7a53108..7fada29a11e5912a64948b6d4550e72ffdb190b2 100644
--- a/src/plugins/analyzerbase/analyzerbase.qbs
+++ b/src/plugins/analyzerbase/analyzerbase.qbs
@@ -13,10 +13,10 @@ QtcPlugin {
     Depends { name: "TextEditor" }
 
     Depends { name: "cpp" }
-    cpp.defines: [
+    cpp.defines: base.concat([
         "ANALYZER_LIBRARY",
         "QT_NO_CAST_FROM_ASCII"
-    ]
+    ])
     cpp.includePaths: [
         "..",
         "../../libs",
diff --git a/src/plugins/debugger/debugger.qbs b/src/plugins/debugger/debugger.qbs
index 7bb7c6648cf3d8a1e7e880e00d279f945c697c19..eede402cfcb1bfd7fcdd024d1edc8cb30999e283 100644
--- a/src/plugins/debugger/debugger.qbs
+++ b/src/plugins/debugger/debugger.qbs
@@ -19,7 +19,6 @@ QtcPlugin {
     Depends { name: "QtcSsh" }
 
     Depends { name: "cpp" }
-    cpp.defines: ["DEBUGGER_LIBRARY"]
     cpp.includePaths: [
         ".",
         "shared",
diff --git a/src/tools/QtcTool.qbs b/src/tools/QtcTool.qbs
index 9632ecc0982b9fa18580dc4338276a62ca77fd55..7669496dca46e1ccf14de4b8fd974601f1164c2f 100644
--- a/src/tools/QtcTool.qbs
+++ b/src/tools/QtcTool.qbs
@@ -2,6 +2,7 @@ import qbs.base 1.0
 
 Application {
     Depends { name: "cpp" }
+    cpp.defines: project.additionalCppDefines
     cpp.linkerFlags: {
         if (qbs.buildVariant == "release" && (qbs.toolchain == "gcc" || qbs.toolchain == "mingw"))
             return ["-Wl,-s"]