diff options
author | Cristian Adam <cristian.adam@qt.io> | 2021-03-26 16:24:03 +0100 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2021-03-26 19:36:19 +0000 |
commit | a862c7b3549a1b1ecd1ed0733bf34c98498343d9 (patch) | |
tree | 4fcf7661222189323641ff9607356833649a03db | |
parent | 254365b7d60b7cb30f22e3494798e931d1817563 (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.cpp | 10 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h | 2 |
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; |