diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 4632ca14b79..95b9f21975c 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(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 32ced5031ef..45519c77e3a 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;