forked from qt-creator/qt-creator
CMake: Shift multiconfig storage from build config to build system
Change-Id: I6f9b6c590975caeea4ad92c61f354d81d4d90431 Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -183,6 +183,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
||||
m_configTextFilterModel(new CategorySortFilterModel(this))
|
||||
{
|
||||
QTC_CHECK(bc);
|
||||
auto buildSystem = static_cast<CMakeBuildSystem *>(bc->buildSystem());
|
||||
|
||||
auto vbox = new QVBoxLayout(this);
|
||||
vbox->setContentsMargins(0, 0, 0, 0);
|
||||
@@ -200,8 +201,8 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
||||
});
|
||||
|
||||
auto buildTypeAspect = bc->aspect<BuildTypeAspect>();
|
||||
connect(buildTypeAspect, &BaseAspect::changed, this, [this, buildTypeAspect]() {
|
||||
if (!m_buildConfiguration->isMultiConfig()) {
|
||||
connect(buildTypeAspect, &BaseAspect::changed, this, [this, buildSystem, buildTypeAspect] {
|
||||
if (!buildSystem->isMultiConfig()) {
|
||||
CMakeConfig config;
|
||||
config << CMakeConfigItem("CMAKE_BUILD_TYPE", buildTypeAspect->value().toUtf8());
|
||||
|
||||
@@ -355,8 +356,6 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
||||
}.setSpacing(0)
|
||||
}.attachTo(details, false);
|
||||
|
||||
auto buildSystem = static_cast<CMakeBuildSystem *>(bc->buildSystem());
|
||||
|
||||
updateAdvancedCheckBox();
|
||||
setError(buildSystem->error());
|
||||
setWarning(buildSystem->warning());
|
||||
@@ -1196,7 +1195,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
|
||||
const Kit *k = target->kit();
|
||||
|
||||
CommandLine cmd = defaultInitialCMakeCommand(k, info.typeName);
|
||||
setIsMultiConfig(CMakeGeneratorKitAspect::isMultiConfigGenerator(k));
|
||||
m_buildSystem->setIsMultiConfig(CMakeGeneratorKitAspect::isMultiConfigGenerator(k));
|
||||
|
||||
// Android magic:
|
||||
if (DeviceTypeKitAspect::deviceTypeId(k) == Android::Constants::ANDROID_DEVICE_TYPE) {
|
||||
@@ -1286,8 +1285,6 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
|
||||
setInitialCMakeArguments(cmd.splitArguments());
|
||||
setCMakeBuildType(info.typeName);
|
||||
});
|
||||
|
||||
setIsMultiConfig(CMakeGeneratorKitAspect::isMultiConfigGenerator(target->kit()));
|
||||
}
|
||||
|
||||
CMakeBuildConfiguration::~CMakeBuildConfiguration()
|
||||
@@ -1660,7 +1657,7 @@ QString CMakeBuildConfiguration::cmakeBuildType() const
|
||||
->setCMakeBuildType(QString::fromUtf8(it->value));
|
||||
};
|
||||
|
||||
if (!isMultiConfig())
|
||||
if (!m_buildSystem->isMultiConfig())
|
||||
setBuildTypeFromConfig(configurationChanges());
|
||||
|
||||
QString cmakeBuildType = aspect<BuildTypeAspect>()->value();
|
||||
@@ -1682,7 +1679,7 @@ QString CMakeBuildConfiguration::cmakeBuildType() const
|
||||
config = initialCMakeConfiguration();
|
||||
}
|
||||
|
||||
if (!config.isEmpty() && !isMultiConfig())
|
||||
if (!config.isEmpty() && !m_buildSystem->isMultiConfig())
|
||||
setBuildTypeFromConfig(config);
|
||||
|
||||
return cmakeBuildType;
|
||||
@@ -1698,16 +1695,6 @@ void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, b
|
||||
}
|
||||
}
|
||||
|
||||
bool CMakeBuildConfiguration::isMultiConfig() const
|
||||
{
|
||||
return m_isMultiConfig;
|
||||
}
|
||||
|
||||
void CMakeBuildConfiguration::setIsMultiConfig(bool isMultiConfig)
|
||||
{
|
||||
m_isMultiConfig = isMultiConfig;
|
||||
}
|
||||
|
||||
namespace Internal {
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
@@ -73,9 +73,6 @@ public:
|
||||
QString cmakeBuildType() const;
|
||||
void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false);
|
||||
|
||||
bool isMultiConfig() const;
|
||||
void setIsMultiConfig(bool isMultiConfig);
|
||||
|
||||
QStringList additionalCMakeArguments() const;
|
||||
void setAdditionalCMakeArguments(const QStringList &args);
|
||||
void filterConfigArgumentsFromAdditionalCMakeArguments();
|
||||
@@ -103,8 +100,6 @@ private:
|
||||
CMakeConfig m_configurationChanges;
|
||||
Internal::CMakeBuildSystem *m_buildSystem = nullptr;
|
||||
|
||||
bool m_isMultiConfig = false;
|
||||
|
||||
friend class Internal::CMakeBuildSettingsWidget;
|
||||
friend class Internal::CMakeBuildSystem;
|
||||
};
|
||||
|
||||
@@ -406,7 +406,7 @@ CommandLine CMakeBuildStep::cmakeCommand() const
|
||||
|
||||
auto bs = qobject_cast<CMakeBuildSystem*>(buildSystem());
|
||||
auto bc = qobject_cast<CMakeBuildConfiguration*>(buildConfiguration());
|
||||
if (bc && bs && bs->isMultiConfig()) {
|
||||
if (bc && bs && bs->isMultiConfigReader()) {
|
||||
cmd.addArg("--config");
|
||||
cmd.addArg(bc->cmakeBuildType());
|
||||
}
|
||||
|
||||
@@ -200,6 +200,8 @@ CMakeBuildSystem::CMakeBuildSystem(CMakeBuildConfiguration *bc)
|
||||
connect(&m_reader, &FileApiReader::dirty, this, &CMakeBuildSystem::becameDirty);
|
||||
|
||||
wireUpConnections();
|
||||
|
||||
m_isMultiConfig = CMakeGeneratorKitAspect::isMultiConfigGenerator(bc->kit());
|
||||
}
|
||||
|
||||
CMakeBuildSystem::~CMakeBuildSystem()
|
||||
@@ -1060,6 +1062,16 @@ bool CMakeBuildSystem::filteredOutTarget(const CMakeBuildTarget &target)
|
||||
}
|
||||
|
||||
bool CMakeBuildSystem::isMultiConfig() const
|
||||
{
|
||||
return m_isMultiConfig;
|
||||
}
|
||||
|
||||
void CMakeBuildSystem::setIsMultiConfig(bool isMultiConfig)
|
||||
{
|
||||
m_isMultiConfig = isMultiConfig;
|
||||
}
|
||||
|
||||
bool CMakeBuildSystem::isMultiConfigReader() const
|
||||
{
|
||||
return m_reader.isMultiConfig();
|
||||
}
|
||||
|
||||
@@ -104,6 +104,9 @@ public:
|
||||
static bool filteredOutTarget(const CMakeBuildTarget &target);
|
||||
|
||||
bool isMultiConfig() const;
|
||||
void setIsMultiConfig(bool isMultiConfig);
|
||||
|
||||
bool isMultiConfigReader() const;
|
||||
bool usesAllCapsTargets() const;
|
||||
|
||||
CMakeProject *project() const;
|
||||
@@ -184,6 +187,8 @@ private:
|
||||
bool m_waitingForParse = false;
|
||||
bool m_combinedScanAndParseResult = false;
|
||||
|
||||
bool m_isMultiConfig = false;
|
||||
|
||||
ParseGuard m_currentGuard;
|
||||
|
||||
CppEditor::CppProjectUpdater *m_cppCodeModelUpdater = nullptr;
|
||||
|
||||
@@ -136,7 +136,7 @@ MakeInstallCommand CMakeProject::makeInstallCommand(const Target *target,
|
||||
if (bs && bc) {
|
||||
if (bs->usesAllCapsTargets())
|
||||
installTarget = "INSTALL";
|
||||
if (bs->isMultiConfig())
|
||||
if (bs->isMultiConfigReader())
|
||||
config << "--config" << bc->cmakeBuildType();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user