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;