forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -903,6 +903,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
|
|||||||
const Kit *k = target->kit();
|
const Kit *k = target->kit();
|
||||||
|
|
||||||
QStringList initialArgs = defaultInitialCMakeArguments(k, info.typeName);
|
QStringList initialArgs = defaultInitialCMakeArguments(k, info.typeName);
|
||||||
|
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) {
|
||||||
@@ -1347,7 +1348,7 @@ QString CMakeBuildConfiguration::cmakeBuildType() const
|
|||||||
config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments());
|
config = CMakeConfigItem::itemsFromArguments(initialCMakeArguments());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!config.isEmpty()) {
|
if (!config.isEmpty() && !isMultiConfig()) {
|
||||||
cmakeBuildType = QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config));
|
cmakeBuildType = QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_BUILD_TYPE", config));
|
||||||
const_cast<CMakeBuildConfiguration*>(this)
|
const_cast<CMakeBuildConfiguration*>(this)
|
||||||
->setCMakeBuildType(cmakeBuildType);
|
->setCMakeBuildType(cmakeBuildType);
|
||||||
@@ -1368,7 +1369,12 @@ void CMakeBuildConfiguration::setCMakeBuildType(const QString &cmakeBuildType, b
|
|||||||
|
|
||||||
bool CMakeBuildConfiguration::isMultiConfig() const
|
bool CMakeBuildConfiguration::isMultiConfig() const
|
||||||
{
|
{
|
||||||
return m_buildSystem->isMultiConfig();
|
return m_isMultiConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CMakeBuildConfiguration::setIsMultiConfig(bool isMultiConfig)
|
||||||
|
{
|
||||||
|
m_isMultiConfig = isMultiConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ public:
|
|||||||
void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false);
|
void setCMakeBuildType(const QString &cmakeBuildType, bool quiet = false);
|
||||||
|
|
||||||
bool isMultiConfig() const;
|
bool isMultiConfig() const;
|
||||||
|
void setIsMultiConfig(bool isMultiConfig);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void errorOccurred(const QString &message);
|
void errorOccurred(const QString &message);
|
||||||
@@ -115,6 +116,7 @@ private:
|
|||||||
Internal::CMakeBuildSystem *m_buildSystem = nullptr;
|
Internal::CMakeBuildSystem *m_buildSystem = nullptr;
|
||||||
|
|
||||||
QStringList m_extraCMakeArguments;
|
QStringList m_extraCMakeArguments;
|
||||||
|
bool m_isMultiConfig = false;
|
||||||
|
|
||||||
friend class Internal::CMakeBuildSettingsWidget;
|
friend class Internal::CMakeBuildSettingsWidget;
|
||||||
friend class Internal::CMakeBuildSystem;
|
friend class Internal::CMakeBuildSystem;
|
||||||
|
|||||||
Reference in New Issue
Block a user