aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2021-03-26 16:24:03 +0100
committerCristian Adam <cristian.adam@qt.io>2021-03-26 19:36:19 +0000
commita862c7b3549a1b1ecd1ed0733bf34c98498343d9 (patch)
tree4fcf7661222189323641ff9607356833649a03db
parent254365b7d60b7cb30f22e3494798e931d1817563 (diff)
CMakePM: Fix "Build type" for multi configuration generators
The multi configuration generators (Visual Studio, Xcode) had an empty "Build type" which caused failures to parse the CMake file-api information. Change-Id: I70ee4978cee4d43e980edf4cd512d1ca95275638 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp10
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h2
2 files changed, 10 insertions, 2 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index 4632ca14b7..95b9f21975 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -903,6 +903,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
const Kit *k = target->kit();
QStringList initialArgs = defaultInitialCMakeArguments(k, info.typeName);
+ setIsMultiConfig(CMakeGeneratorKitAspect::isMultiConfigGenerator(k));
// Android magic:
if (DeviceTypeKitAspect::deviceTypeId(k) == Android::Constants::ANDROID_DEVICE_TYPE) {
@@ -1347,7 +1348,7 @@ QString CMakeBuildConfiguration::cmakeBuildType() const
config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments());
}
- if (!config.isEmpty()) {
+ if (!config.isEmpty() && !isMultiConfig()) {
cmakeBuildType = QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config));
const_cast<CMakeBuildConfiguration*>(this)
->setCMakeBuildType(cmakeBuildType);
@@ -1368,7 +1369,12 @@ void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, b
bool CMakeBuildConfiguration::isMultiConfig() const
{
- return m_buildSystem->isMultiConfig();
+ return m_isMultiConfig;
+}
+
+void CMakeBuildConfiguration::setIsMultiConfig(bool isMultiConfig)
+{
+ m_isMultiConfig = isMultiConfig;
}
namespace Internal {
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
index 32ced5031e..45519c77e3 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
@@ -78,6 +78,7 @@ public:
void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false);
bool isMultiConfig() const;
+ void setIsMultiConfig(bool isMultiConfig);
signals:
void errorOccurred(const QString &message);
@@ -115,6 +116,7 @@ private:
Internal::CMakeBuildSystem *m_buildSystem = nullptr;
QStringList m_extraCMakeArguments;
+ bool m_isMultiConfig = false;
friend class Internal::CMakeBuildSettingsWidget;
friend class Internal::CMakeBuildSystem;