Fix import of existing builds

* Report what kind of build we have in the tooltip
 * Create only debug/release configuration for debug/release
   configured directories
 * Create debug and release configuraions for debug_and_release
   configured directories
 * Add debug_and_release to options in QMakeStep UI
 * Do not add CONFIG+=debug/release to CONFIG+=debug_and_release builds
This commit is contained in:
Tobias Hunger
2010-08-16 17:35:36 +02:00
parent ace96f3fc3
commit 8cd3b54949
4 changed files with 46 additions and 11 deletions

View File

@@ -345,8 +345,12 @@ void QMakeStepConfigWidget::qmakeBuildConfigChanged()
{ {
Qt4BuildConfiguration *bc = m_step->qt4BuildConfiguration(); Qt4BuildConfiguration *bc = m_step->qt4BuildConfiguration();
bool debug = bc->qmakeBuildConfiguration() & QtVersion::DebugBuild; bool debug = bc->qmakeBuildConfiguration() & QtVersion::DebugBuild;
int index = debug ? 0 : 1;
if (bc->qmakeBuildConfiguration() & QtVersion::BuildAll)
index = 2;
m_ignoreChange = true; m_ignoreChange = true;
m_ui.buildConfigurationComboBox->setCurrentIndex(debug? 0 : 1); m_ui.buildConfigurationComboBox->setCurrentIndex(index);
m_ignoreChange = false; m_ignoreChange = false;
updateSummaryLabel(); updateSummaryLabel();
updateEffectiveQMakeCall(); updateEffectiveQMakeCall();
@@ -379,11 +383,18 @@ void QMakeStepConfigWidget::buildConfigurationSelected()
return; return;
Qt4BuildConfiguration *bc = m_step->qt4BuildConfiguration(); Qt4BuildConfiguration *bc = m_step->qt4BuildConfiguration();
QtVersion::QmakeBuildConfigs buildConfiguration = bc->qmakeBuildConfiguration(); QtVersion::QmakeBuildConfigs buildConfiguration = bc->qmakeBuildConfiguration();
if (m_ui.buildConfigurationComboBox->currentIndex() == 0) { // debug switch (m_ui.buildConfigurationComboBox->currentIndex()) {
buildConfiguration = buildConfiguration | QtVersion::DebugBuild; case 0:
} else { buildConfiguration = QtVersion::DebugBuild;
buildConfiguration = buildConfiguration & ~QtVersion::DebugBuild; break;
case 1:
buildConfiguration = 0;
break;
case 2:
buildConfiguration = QtVersion::BuildAll;
break;
} }
m_ignoreChange = true; m_ignoreChange = true;
bc->setQMakeBuildConfiguration(buildConfiguration); bc->setQMakeBuildConfiguration(buildConfiguration);
m_ignoreChange = false; m_ignoreChange = false;

View File

@@ -39,6 +39,11 @@
<string>Release</string> <string>Release</string>
</property> </property>
</item> </item>
<item>
<property name="text">
<string>Debug and release</string>
</property>
</item>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">

View File

@@ -390,9 +390,13 @@ void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUser
if (addedUserConfigs) { if (addedUserConfigs) {
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (userBuildConfiguration & QtVersion::BuildAll)) if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (userBuildConfiguration & QtVersion::BuildAll))
(*addedUserConfigs) << "debug_and_release"; (*addedUserConfigs) << "debug_and_release";
if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(userBuildConfiguration & QtVersion::DebugBuild)) if ((defaultBuildConfiguration & QtVersion::DebugBuild)
&& !(userBuildConfiguration & QtVersion::DebugBuild)
&& !(userBuildConfiguration & QtVersion::BuildAll))
(*addedUserConfigs) << "release"; (*addedUserConfigs) << "release";
if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (userBuildConfiguration & QtVersion::DebugBuild)) if (!(defaultBuildConfiguration & QtVersion::DebugBuild)
&& (userBuildConfiguration & QtVersion::DebugBuild)
&& !(userBuildConfiguration & QtVersion::BuildAll))
(*addedUserConfigs) << "debug"; (*addedUserConfigs) << "debug";
} }
} }

View File

@@ -34,6 +34,7 @@
#include "qt4project.h" #include "qt4project.h"
#include "qt4projectmanagerconstants.h" #include "qt4projectmanagerconstants.h"
#include "qt4target.h" #include "qt4target.h"
#include "qtversionmanager.h"
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <projectexplorer/task.h> #include <projectexplorer/task.h>
@@ -231,8 +232,10 @@ bool TargetSetupPage::setupProject(Qt4ProjectManager::Qt4Project *project)
info.isTemporary = false; info.isTemporary = false;
} }
if ((info.buildConfig | QtVersion::DebugBuild) != info.buildConfig) // If we have buildAll, then we want to havbe two BCs set up, one to build debug,
targetInfos.append(BuildConfigurationInfo(info.version, QtVersion::QmakeBuildConfigs(info.buildConfig | QtVersion::DebugBuild), // the other to build release.
if (info.buildConfig & QtVersion::BuildAll)
targetInfos.append(BuildConfigurationInfo(info.version, info.buildConfig & ~(info.buildConfig & QtVersion::DebugBuild),
info.additionalArguments, info.directory)); info.additionalArguments, info.directory));
targetInfos.append(BuildConfigurationInfo(info.version, info.buildConfig, targetInfos.append(BuildConfigurationInfo(info.version, info.buildConfig,
info.additionalArguments, info.directory)); info.additionalArguments, info.directory));
@@ -506,10 +509,22 @@ void TargetSetupPage::updateVersionItem(QTreeWidgetItem *versionItem, int index)
ImportInfo &info = m_infos[index]; ImportInfo &info = m_infos[index];
QPair<QIcon, QString> issues = reportIssues(info.version); QPair<QIcon, QString> issues = reportIssues(info.version);
//: We are going to build debug and release
QString buildType = tr("debug and release");
if ((info.buildConfig & QtVersion::BuildAll) == 0) {
if (info.buildConfig & QtVersion::DebugBuild)
//: Debug build
buildType = tr("debug");
else
//: release build
buildType = tr("release");
}
QString toolTip = QLatin1String("<nobr>"); QString toolTip = QLatin1String("<nobr>");
toolTip = toolTip.append(info.version->displayName()); toolTip = toolTip.append(info.version->displayName());
toolTip.append(tr("<br>using %1", "%1: qmake used (incl. full path)"). //: %1: qmake used (incl. full path), %2: "debug", "release" or "debug and release"
arg(QDir::toNativeSeparators(info.version->qmakeCommand()))); toolTip.append(tr("<br>using %1 (%2)").
arg(QDir::toNativeSeparators(info.version->qmakeCommand())).
arg(buildType));
if (!issues.second.isEmpty()) if (!issues.second.isEmpty())
toolTip.append(QString::fromLatin1("<br><br>%1").arg(issues.second)); toolTip.append(QString::fromLatin1("<br><br>%1").arg(issues.second));