diff --git a/src/plugins/cmakeprojectmanager/builddirparameters.cpp b/src/plugins/cmakeprojectmanager/builddirparameters.cpp index a4068c06b4d..fe4c63af3f7 100644 --- a/src/plugins/cmakeprojectmanager/builddirparameters.cpp +++ b/src/plugins/cmakeprojectmanager/builddirparameters.cpp @@ -41,7 +41,7 @@ BuildDirParameters::BuildDirParameters(CMakeBuildSystem *buildSystem) [this](const QString &s) { return expander->expand(s); }); - additionalCMakeArguments = Utils::transform(buildSystem->additionalCMakeArguments(), + additionalCMakeArguments = Utils::transform(bc->additionalCMakeArguments(), [this](const QString &s) { return expander->expand(s); }); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 2444d5a4623..f5961f03aef 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -630,7 +630,7 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments() // value() will contain only the unknown arguments (the non -D/-U arguments) // As the user would expect to have e.g. "--preset" from "Initial Configuration" // to "Current Configuration" as additional parameters - m_buildConfig->cmakeBuildSystem()->setAdditionalCMakeArguments(ProcessArgs::splitArgs( + m_buildConfig->setAdditionalCMakeArguments(ProcessArgs::splitArgs( m_buildConfig->initialCMakeArguments(), HostOsInfo::hostOs())); } @@ -1550,8 +1550,8 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id) k, configureEnvironment(), info.buildDirectory); - m_buildSystem->setInitialCMakeArguments(initialCMakeArguments); - m_buildSystem->setCMakeBuildType(buildType); + setInitialCMakeArguments(initialCMakeArguments); + setCMakeBuildType(buildType); setBuildPresetToBuildSteps(target); }); @@ -1686,32 +1686,30 @@ void CMakeBuildSystem::clearError(ForceEnabledChanged fec) } } -void CMakeBuildSystem::setInitialCMakeArguments(const QStringList &args) +void CMakeBuildConfiguration::setInitialCMakeArguments(const QStringList &args) { QStringList additionalArguments; - cmakeBuildConfiguration()->initialCMakeArguments.setAllValues(args.join('\n'), additionalArguments); + initialCMakeArguments.setAllValues(args.join('\n'), additionalArguments); // Set the unknown additional arguments also for the "Current Configuration" setAdditionalCMakeArguments(additionalArguments); } -QStringList CMakeBuildSystem::additionalCMakeArguments() const +QStringList CMakeBuildConfiguration::additionalCMakeArguments() const { - return ProcessArgs::splitArgs(cmakeBuildConfiguration()->additionalCMakeOptions(), - HostOsInfo::hostOs()); + return ProcessArgs::splitArgs(additionalCMakeOptions(), HostOsInfo::hostOs()); } -void CMakeBuildSystem::setAdditionalCMakeArguments(const QStringList &args) +void CMakeBuildConfiguration::setAdditionalCMakeArguments(const QStringList &args) { const QStringList expandedAdditionalArguments = Utils::transform(args, [this](const QString &s) { - return buildConfiguration()->macroExpander()->expand(s); + return macroExpander()->expand(s); }); const QStringList nonEmptyAdditionalArguments = Utils::filtered(expandedAdditionalArguments, [](const QString &s) { return !s.isEmpty(); }); - cmakeBuildConfiguration()->additionalCMakeOptions - .setValue(ProcessArgs::joinArgs(nonEmptyAdditionalArguments)); + additionalCMakeOptions.setValue(ProcessArgs::joinArgs(nonEmptyAdditionalArguments)); } void CMakeBuildConfiguration::filterConfigArgumentsFromAdditionalCMakeArguments() @@ -2052,8 +2050,7 @@ QString CMakeBuildSystem::cmakeBuildType() const return item.key == "CMAKE_BUILD_TYPE" && !item.isInitial; }); if (it != config.end()) - const_cast(this) - ->setCMakeBuildType(QString::fromUtf8(it->value)); + cmakeBuildConfiguration()->setCMakeBuildType(QString::fromUtf8(it->value)); }; if (!isMultiConfig()) @@ -2084,13 +2081,12 @@ QString CMakeBuildSystem::cmakeBuildType() const return cmakeBuildType; } -void CMakeBuildSystem::setCMakeBuildType(const QString &cmakeBuildType, bool quiet) +void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, bool quiet) { - auto aspect = &cmakeBuildConfiguration()->buildTypeAspect; if (quiet) - aspect->setValueQuietly(cmakeBuildType); + buildTypeAspect.setValueQuietly(cmakeBuildType); else - aspect->setValue(cmakeBuildType); + buildTypeAspect.setValue(cmakeBuildType); } namespace Internal { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index e383408ec45..cd019042d45 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -73,6 +73,12 @@ public: Utils::Environment configureEnvironment() const; Internal::CMakeBuildSystem *cmakeBuildSystem() const; + QStringList additionalCMakeArguments() const; + void setAdditionalCMakeArguments(const QStringList &args); + + void setInitialCMakeArguments(const QStringList &args); + void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false); + ProjectExplorer::BuildDirectoryAspect buildDir{this}; Internal::InitialCMakeArgumentsAspect initialCMakeArguments{this}; Utils::StringAspect additionalCMakeOptions{this}; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index f6f56c76d75..69e8c74a10b 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1182,7 +1182,7 @@ void CMakeBuildSystem::wireUpConnections() const CMakeConfig config = CMakeConfig::fromFile(cmakeCacheTxt, &errorMessage); if (!config.isEmpty() && errorMessage.isEmpty()) { QString cmakeBuildTypeName = config.stringValueOf("CMAKE_BUILD_TYPE"); - setCMakeBuildType(cmakeBuildTypeName, true); + cmakeBuildConfiguration()->setCMakeBuildType(cmakeBuildTypeName, true); } } reparse(options); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index 12629227762..694840af26b 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -101,7 +101,6 @@ public: CMakeProject *project() const; QString cmakeBuildType() const; - void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false); ProjectExplorer::BuildConfiguration::BuildType buildType() const; CMakeConfig configurationFromCMake() const; @@ -109,14 +108,9 @@ public: QStringList configurationChangesArguments(bool initialParameters = false) const; - QStringList additionalCMakeArguments() const; - void setAdditionalCMakeArguments(const QStringList &args); - void setConfigurationFromCMake(const CMakeConfig &config); void setConfigurationChanges(const CMakeConfig &config); - void setInitialCMakeArguments(const QStringList &args); - QString error() const; QString warning() const;