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) {
return expander->expand(s);
});
additionalCMakeArguments = Utils::transform(buildSystem->additionalCMakeArguments(),
additionalCMakeArguments = Utils::transform(bc->additionalCMakeArguments(),
[this](const QString &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)
// 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<CMakeBuildSystem*>(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 {

View File

@@ -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};

View File

@@ -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);

View File

@@ -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;