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