CMake: Move some functions from build system to build config

Less indirection.

Change-Id: I3a0a41c360b051cf0a3021d57d437fbde8f0736e
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2023-07-07 16:46:33 +02:00
parent dbdd6a0701
commit 5f9408ee8d
5 changed files with 22 additions and 26 deletions

View File

@@ -41,7 +41,7 @@ BuildDirParameters::BuildDirParameters(CMakeBuildSystem *buildSystem)
[this](const QString &s) { [this](const QString &s) {
return expander->expand(s); return expander->expand(s);
}); });
additionalCMakeArguments = Utils::transform(buildSystem->additionalCMakeArguments(), additionalCMakeArguments = Utils::transform(bc->additionalCMakeArguments(),
[this](const QString &s) { [this](const QString &s) {
return expander->expand(s); return expander->expand(s);
}); });

View File

@@ -630,7 +630,7 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments()
// value() will contain only the unknown arguments (the non -D/-U arguments) // 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" // As the user would expect to have e.g. "--preset" from "Initial Configuration"
// to "Current Configuration" as additional parameters // to "Current Configuration" as additional parameters
m_buildConfig->cmakeBuildSystem()->setAdditionalCMakeArguments(ProcessArgs::splitArgs( m_buildConfig->setAdditionalCMakeArguments(ProcessArgs::splitArgs(
m_buildConfig->initialCMakeArguments(), HostOsInfo::hostOs())); m_buildConfig->initialCMakeArguments(), HostOsInfo::hostOs()));
} }
@@ -1550,8 +1550,8 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
k, k,
configureEnvironment(), configureEnvironment(),
info.buildDirectory); info.buildDirectory);
m_buildSystem->setInitialCMakeArguments(initialCMakeArguments); setInitialCMakeArguments(initialCMakeArguments);
m_buildSystem->setCMakeBuildType(buildType); setCMakeBuildType(buildType);
setBuildPresetToBuildSteps(target); 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; 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" // Set the unknown additional arguments also for the "Current Configuration"
setAdditionalCMakeArguments(additionalArguments); setAdditionalCMakeArguments(additionalArguments);
} }
QStringList CMakeBuildSystem::additionalCMakeArguments() const QStringList CMakeBuildConfiguration::additionalCMakeArguments() const
{ {
return ProcessArgs::splitArgs(cmakeBuildConfiguration()->additionalCMakeOptions(), return ProcessArgs::splitArgs(additionalCMakeOptions(), HostOsInfo::hostOs());
HostOsInfo::hostOs());
} }
void CMakeBuildSystem::setAdditionalCMakeArguments(const QStringList &args) void CMakeBuildConfiguration::setAdditionalCMakeArguments(const QStringList &args)
{ {
const QStringList expandedAdditionalArguments = Utils::transform(args, [this](const QString &s) { 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 QStringList nonEmptyAdditionalArguments = Utils::filtered(expandedAdditionalArguments,
[](const QString &s) { [](const QString &s) {
return !s.isEmpty(); return !s.isEmpty();
}); });
cmakeBuildConfiguration()->additionalCMakeOptions additionalCMakeOptions.setValue(ProcessArgs::joinArgs(nonEmptyAdditionalArguments));
.setValue(ProcessArgs::joinArgs(nonEmptyAdditionalArguments));
} }
void CMakeBuildConfiguration::filterConfigArgumentsFromAdditionalCMakeArguments() void CMakeBuildConfiguration::filterConfigArgumentsFromAdditionalCMakeArguments()
@@ -2052,8 +2050,7 @@ QString CMakeBuildSystem::cmakeBuildType() const
return item.key == "CMAKE_BUILD_TYPE" && !item.isInitial; return item.key == "CMAKE_BUILD_TYPE" && !item.isInitial;
}); });
if (it != config.end()) if (it != config.end())
const_cast<CMakeBuildSystem*>(this) cmakeBuildConfiguration()->setCMakeBuildType(QString::fromUtf8(it->value));
->setCMakeBuildType(QString::fromUtf8(it->value));
}; };
if (!isMultiConfig()) if (!isMultiConfig())
@@ -2084,13 +2081,12 @@ QString CMakeBuildSystem::cmakeBuildType() const
return cmakeBuildType; return cmakeBuildType;
} }
void CMakeBuildSystem::setCMakeBuildType(const QString &cmakeBuildType, bool quiet) void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, bool quiet)
{ {
auto aspect = &cmakeBuildConfiguration()->buildTypeAspect;
if (quiet) if (quiet)
aspect->setValueQuietly(cmakeBuildType); buildTypeAspect.setValueQuietly(cmakeBuildType);
else else
aspect->setValue(cmakeBuildType); buildTypeAspect.setValue(cmakeBuildType);
} }
namespace Internal { namespace Internal {

View File

@@ -73,6 +73,12 @@ public:
Utils::Environment configureEnvironment() const; Utils::Environment configureEnvironment() const;
Internal::CMakeBuildSystem *cmakeBuildSystem() 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}; ProjectExplorer::BuildDirectoryAspect buildDir{this};
Internal::InitialCMakeArgumentsAspect initialCMakeArguments{this}; Internal::InitialCMakeArgumentsAspect initialCMakeArguments{this};
Utils::StringAspect additionalCMakeOptions{this}; Utils::StringAspect additionalCMakeOptions{this};

View File

@@ -1182,7 +1182,7 @@ void CMakeBuildSystem::wireUpConnections()
const CMakeConfig config = CMakeConfig::fromFile(cmakeCacheTxt, &errorMessage); const CMakeConfig config = CMakeConfig::fromFile(cmakeCacheTxt, &errorMessage);
if (!config.isEmpty() && errorMessage.isEmpty()) { if (!config.isEmpty() && errorMessage.isEmpty()) {
QString cmakeBuildTypeName = config.stringValueOf("CMAKE_BUILD_TYPE"); QString cmakeBuildTypeName = config.stringValueOf("CMAKE_BUILD_TYPE");
setCMakeBuildType(cmakeBuildTypeName, true); cmakeBuildConfiguration()->setCMakeBuildType(cmakeBuildTypeName, true);
} }
} }
reparse(options); reparse(options);

View File

@@ -101,7 +101,6 @@ public:
CMakeProject *project() const; CMakeProject *project() const;
QString cmakeBuildType() const; QString cmakeBuildType() const;
void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false);
ProjectExplorer::BuildConfiguration::BuildType buildType() const; ProjectExplorer::BuildConfiguration::BuildType buildType() const;
CMakeConfig configurationFromCMake() const; CMakeConfig configurationFromCMake() const;
@@ -109,14 +108,9 @@ public:
QStringList configurationChangesArguments(bool initialParameters = false) const; QStringList configurationChangesArguments(bool initialParameters = false) const;
QStringList additionalCMakeArguments() const;
void setAdditionalCMakeArguments(const QStringList &args);
void setConfigurationFromCMake(const CMakeConfig &config); void setConfigurationFromCMake(const CMakeConfig &config);
void setConfigurationChanges(const CMakeConfig &config); void setConfigurationChanges(const CMakeConfig &config);
void setInitialCMakeArguments(const QStringList &args);
QString error() const; QString error() const;
QString warning() const; QString warning() const;