diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index ba90b27df0a..da168944f16 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -60,19 +60,6 @@ namespace Internal { const char INITIAL_ARGUMENTS[] = "CMakeProjectManager.CMakeBuildConfiguration.InitialArgument"; // Obsolete since QtC 3.7 const char CONFIGURATION_KEY[] = "CMake.Configuration"; -static FileName shadowBuildDirectory(const FileName &projectFilePath, const Kit *k, - const QString &bcName, BuildConfiguration::BuildType buildType) -{ - if (projectFilePath.isEmpty()) - return FileName(); - - const QString projectName = projectFilePath.parentDir().fileName(); - ProjectMacroExpander expander(projectName, k, bcName, buildType); - QDir projectDir = QDir(Project::projectDirectory(projectFilePath).toString()); - QString buildPath = expander.expand(Core::DocumentManager::buildDirectory()); - return FileName::fromUserInput(projectDir.absoluteFilePath(buildPath)); -} - CMakeBuildConfiguration::CMakeBuildConfiguration(ProjectExplorer::Target *parent) : BuildConfiguration(parent, Core::Id(Constants::CMAKE_BC_ID)) { @@ -187,6 +174,21 @@ bool CMakeBuildConfiguration::persistCMakeState() return m_buildDirManager->persistCMakeState(); } +FileName CMakeBuildConfiguration::shadowBuildDirectory(const FileName &projectFilePath, + const Kit *k, + const QString &bcName, + BuildConfiguration::BuildType buildType) +{ + if (projectFilePath.isEmpty()) + return FileName(); + + const QString projectName = projectFilePath.parentDir().fileName(); + ProjectMacroExpander expander(projectName, k, bcName, buildType); + QDir projectDir = QDir(Project::projectDirectory(projectFilePath).toString()); + QString buildPath = expander.expand(Core::DocumentManager::buildDirectory()); + return FileName::fromUserInput(projectDir.absoluteFilePath(buildPath)); +} + QList CMakeBuildConfiguration::completeCMakeConfiguration() const { if (m_buildDirManager->isParsing()) @@ -363,7 +365,8 @@ QList CMakeBuildConfigurationFactory::availableSet info->displayName = info->typeName; } info->buildDirectory - = shadowBuildDirectory(projectPathName, k, info->displayName, info->buildType); + = CMakeBuildConfiguration::shadowBuildDirectory(projectPathName, k, + info->displayName, info->buildType); result << info; } return result; @@ -380,8 +383,10 @@ ProjectExplorer::BuildConfiguration *CMakeBuildConfigurationFactory::create(Proj CMakeProject *project = static_cast(parent->project()); if (copy.buildDirectory.isEmpty()) { - copy.buildDirectory = shadowBuildDirectory(project->projectFilePath(), parent->kit(), - copy.displayName, info->buildType); + copy.buildDirectory + = CMakeBuildConfiguration::shadowBuildDirectory(project->projectFilePath(), + parent->kit(), + copy.displayName, info->buildType); } auto bc = new CMakeBuildConfiguration(parent); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index ba800027121..b386ae8579a 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -77,6 +77,10 @@ public: void resetData(); bool persistCMakeState(); + static Utils::FileName + shadowBuildDirectory(const Utils::FileName &projectFilePath, const ProjectExplorer::Kit *k, + const QString &bcName, BuildConfiguration::BuildType buildType); + signals: void errorOccured(const QString &message);