diff --git a/qtcreator.pri b/qtcreator.pri
index 801d778614382e6ed2b0d693417f5dcde4ad0ce2..dac5344dc219e011453269d89a5e2c0861c2ef53 100644
--- a/qtcreator.pri
+++ b/qtcreator.pri
@@ -3,6 +3,18 @@ QTCREATOR_PRI_INCLUDED = 1
 
 QTCREATOR_VERSION = 2.5.83
 
+isEqual(QT_MAJOR_VERSION, 5) {
+
+defineReplace(cleanPath) {
+    return($$clean_path($$1))
+}
+
+defineReplace(targetPath) {
+    return($$shell_path($$1))
+}
+
+} else { # qt5
+
 defineReplace(cleanPath) {
     win32:1 ~= s|\\\\|/|g
     contains(1, ^/.*):pfx = /
@@ -20,6 +32,8 @@ defineReplace(targetPath) {
     return($$replace(1, /, $$QMAKE_DIR_SEP))
 }
 
+} # qt5
+
 defineReplace(qtLibraryName) {
    unset(LIBRARY_NAME)
    LIBRARY_NAME = $$1
@@ -56,6 +70,15 @@ defineTest(minQtVersion) {
     return(false)
 }
 
+isEqual(QT_MAJOR_VERSION, 5) {
+
+# For use in custom compilers which just copy files
+defineReplace(stripSrcDir) {
+    return($$relative_path($$absolute_path($$1, $$OUT_PWD), $$_PRO_FILE_PWD_))
+}
+
+} else { # qt5
+
 # For use in custom compilers which just copy files
 win32:i_flag = i
 defineReplace(stripSrcDir) {
@@ -69,6 +92,8 @@ defineReplace(stripSrcDir) {
     return($$out)
 }
 
+} # qt5
+
 isEmpty(TEST):CONFIG(debug, debug|release) {
     !debug_and_release|build_pass {
         TEST = 1
diff --git a/src/qtcreatorplugin.pri b/src/qtcreatorplugin.pri
index ea0360753be46886110bcb09ce4c0742ddd221f2..1c1d6b85589e82ce1f2beae48015667778c95315 100644
--- a/src/qtcreatorplugin.pri
+++ b/src/qtcreatorplugin.pri
@@ -33,11 +33,21 @@ isEmpty(TARGET) {
     error("qtcreatorplugin.pri: You must provide a TARGET")
 }
 
+isEqual(QT_MAJOR_VERSION, 5) {
+
+defineReplace(stripOutDir) {
+    return($$relative_path($$1, $$OUT_PWD))
+}
+
+} else { # qt5
+
 defineReplace(stripOutDir) {
     1 ~= s|^$$re_escape($$OUT_PWD/)||$$i_flag
     return($$1)
 }
 
+} # qt5
+
 PLUGINSPEC = $$_PRO_FILE_PWD_/$${TARGET}.pluginspec
 PLUGINSPEC_IN = $${PLUGINSPEC}.in
 exists($$PLUGINSPEC_IN) {