diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 28cbac588c8..182c6fc2e93 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -170,12 +170,9 @@ void BuildDirManager::forceReparse() stopProcess(); CMakeTool *tool = CMakeKitInformation::cmakeTool(kit()); - const QString generator = CMakeGeneratorKitInformation::generator(kit()); - QTC_ASSERT(tool, return); - QTC_ASSERT(!generator.isEmpty(), return); - startCMake(tool, generator, intendedConfiguration()); + startCMake(tool, CMakeGeneratorKitInformation::generatorArguments(kit()), intendedConfiguration()); } void BuildDirManager::resetData() @@ -210,16 +207,15 @@ void BuildDirManager::parse() checkConfiguration(); CMakeTool *tool = CMakeKitInformation::cmakeTool(kit()); - const QString generator = CMakeGeneratorKitInformation::generator(kit()); + const QStringList generatorArgs = CMakeGeneratorKitInformation::generatorArguments(kit()); QTC_ASSERT(tool, return); - QTC_ASSERT(!generator.isEmpty(), return); const QString cbpFile = CMakeManager::findCbpFile(QDir(workDirectory().toString())); const QFileInfo cbpFileFi = cbpFile.isEmpty() ? QFileInfo() : QFileInfo(cbpFile); if (!cbpFileFi.exists()) { // Initial create: - startCMake(tool, generator, intendedConfiguration()); + startCMake(tool, generatorArgs, intendedConfiguration()); return; } @@ -228,7 +224,7 @@ void BuildDirManager::parse() return f.toFileInfo().lastModified() > cbpFileFi.lastModified(); }); if (mustUpdate) { - startCMake(tool, generator, CMakeConfig()); + startCMake(tool, generatorArgs, CMakeConfig()); } else { extractData(); m_hasData = true; @@ -392,7 +388,7 @@ void BuildDirManager::extractData() m_buildTargets = cbpparser.buildTargets(); } -void BuildDirManager::startCMake(CMakeTool *tool, const QString &generator, +void BuildDirManager::startCMake(CMakeTool *tool, const QStringList &generatorArgs, const CMakeConfig &config) { QTC_ASSERT(tool && tool->isValid(), return); @@ -441,8 +437,7 @@ void BuildDirManager::startCMake(CMakeTool *tool, const QString &generator, QString args; Utils::QtcProcess::addArg(&args, srcDir); - if (!generator.isEmpty()) - Utils::QtcProcess::addArg(&args, QString::fromLatin1("-G%1").arg(generator)); + Utils::QtcProcess::addArgs(&args, generatorArgs); Utils::QtcProcess::addArgs(&args, toArguments(config, kit())); ProjectExplorer::TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); @@ -689,10 +684,8 @@ void BuildDirManager::maybeForceReparse() const CMakeTool *tool = CMakeKitInformation::cmakeTool(kit()); QTC_ASSERT(tool, return); // No cmake... we should not have ended up here in the first place - const QString kitGenerator = CMakeGeneratorKitInformation::generator(kit()); - int pos = kitGenerator.lastIndexOf(QLatin1String(" - ")); - const QString extraKitGenerator = (pos > 0) ? kitGenerator.left(pos) : QString(); - const QString mainKitGenerator = (pos > 0) ? kitGenerator.mid(pos + 3) : kitGenerator; + const QString extraKitGenerator = CMakeGeneratorKitInformation::extraGenerator(kit()); + const QString mainKitGenerator = CMakeGeneratorKitInformation::generator(kit()); CMakeConfig targetConfig = m_buildConfiguration->cmakeConfiguration(); targetConfig.append(CMakeConfigItem(GENERATOR_KEY, CMakeConfigItem::INTERNAL, QByteArray(), mainKitGenerator.toUtf8())); diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index d830e8a8595..0e860f03ce3 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -104,7 +104,7 @@ private: void cleanUpProcess(); void extractData(); - void startCMake(CMakeTool *tool, const QString &generator, const CMakeConfig &config); + void startCMake(CMakeTool *tool, const QStringList &generatorArgs, const CMakeConfig &config); void cmakeFinished(int code, QProcess::ExitStatus status); void processCMakeOutput(); diff --git a/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp b/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp index 19fcded2206..db3a38f7469 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitconfigwidget.cpp @@ -253,7 +253,12 @@ void CMakeGeneratorKitConfigWidget::refresh() } const QString generator = CMakeGeneratorKitInformation::generator(m_kit); - m_comboBox->setCurrentIndex(m_comboBox->findData(generator)); + const QString extraGenerator = CMakeGeneratorKitInformation::extraGenerator(m_kit); + QString fullName = extraGenerator; + if (!fullName.isEmpty()) + fullName += " - "; + fullName += generator; + m_comboBox->setCurrentIndex(m_comboBox->findData(fullName)); } QWidget *CMakeGeneratorKitConfigWidget::mainWidget() const