diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
index 5e243de525a242b1cb21393aca7a66618a8c270d..77b40fa152a38b3f02ce409b5695a83e246c773d 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
@@ -277,18 +277,16 @@ QList<ProjectExplorer::BuildInfo *> QbsBuildConfigurationFactory::availableSetup
 {
     QList<ProjectExplorer::BuildInfo *> result;
 
-    const Utils::FileName buildDirectory = QbsProject::defaultBuildDirectory(projectPath);
-
     ProjectExplorer::BuildInfo *info = createBuildInfo(k, ProjectExplorer::BuildConfiguration::Debug);
     //: The name of the debug build configuration created by default for a qbs project.
     info->displayName = tr("Debug");
-    info->buildDirectory = buildDirectory;
+    info->buildDirectory = QbsProject::defaultBuildDirectory(projectPath, k, info->displayName);
     result << info;
 
     info = createBuildInfo(k, ProjectExplorer::BuildConfiguration::Release);
     //: The name of the release build configuration created by default for a qbs project.
     info->displayName = tr("Release");
-    info->buildDirectory = buildDirectory;
+    info->buildDirectory = QbsProject::defaultBuildDirectory(projectPath, k, info->displayName);
     result << info;
 
     return result;
@@ -311,7 +309,8 @@ ProjectExplorer::BuildConfiguration *QbsBuildConfigurationFactory::create(Projec
 
     Utils::FileName buildDir = info->buildDirectory;
     if (buildDir.isEmpty())
-        buildDir = QbsProject::defaultBuildDirectory(parent->project()->projectDirectory());
+        buildDir = QbsProject::defaultBuildDirectory(parent->project()->projectDirectory(),
+                                                     parent->kit(), info->displayName);
 
     ProjectExplorer::BuildConfiguration *bc
             = QbsBuildConfiguration::setup(parent, info->displayName, info->displayName,
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 000fdcca0086717e5c41497909a4234260e44b2d..317834df4c3556c976dfa5e3992a4ee92278d427 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -52,6 +52,7 @@
 #include <projectexplorer/kitinformation.h>
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/projectmacroexpander.h>
 #include <projectexplorer/target.h>
 #include <projectexplorer/taskhub.h>
 #include <projectexplorer/toolchain.h>
@@ -247,11 +248,14 @@ bool QbsProject::hasParseResult() const
     return qbsProject().isValid();
 }
 
-Utils::FileName QbsProject::defaultBuildDirectory(const QString &path)
+Utils::FileName QbsProject::defaultBuildDirectory(const QString &projectFilePath, const Kit *k,
+                                                  const QString &bcName)
 {
-    QFileInfo fi(path);
-    const QString buildDir = QDir(fi.canonicalPath()).absoluteFilePath(QString::fromLatin1("../%1-build").arg(fi.baseName()));
-    return FileName::fromString(QDir::cleanPath(buildDir));
+    const QString projectName = QFileInfo(projectFilePath).completeBaseName();
+    ProjectExplorer::ProjectMacroExpander expander(projectFilePath, projectName, k, bcName);
+    QString projectDir = projectDirectory(projectFilePath);
+    QString buildPath = Utils::expandMacros(Core::DocumentManager::buildDirectory(), &expander);
+    return Utils::FileName::fromString(Utils::FileUtils::resolvePath(projectDir, buildPath));
 }
 
 qbs::Project QbsProject::qbsProject() const
diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h
index 0f0ab61b3c4dd88ddc3bd7d43df096024241fc2c..00fc85f0038df71e8990cae895269e2ebee015e4 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.h
+++ b/src/plugins/qbsprojectmanager/qbsproject.h
@@ -92,7 +92,9 @@ public:
     bool hasParseResult() const;
     void parseCurrentBuildConfiguration(bool force);
 
-    static Utils::FileName defaultBuildDirectory(const QString &path);
+    static Utils::FileName defaultBuildDirectory(const QString &projectFilePath,
+                                                 const ProjectExplorer::Kit *k,
+                                                 const QString &bcName);
 
     qbs::Project qbsProject() const;
     const qbs::ProjectData qbsProjectData() const;