Share the code for determining used qmake arguments.

Move the code that compares the Qt version's debug|release property
with the build configuration's debug|release property
to the new build configuration class.

Reviewed-by: dt
This commit is contained in:
con
2009-12-02 17:43:43 +01:00
parent 65c80300a9
commit f3bdeb8c9a
9 changed files with 59 additions and 92 deletions

View File

@@ -87,22 +87,17 @@ QStringList QMakeStep::allArguments()
arguments << QLatin1String("-unix"); arguments << QLatin1String("-unix");
#endif #endif
if (bc->value("buildConfiguration").isValid()) { // Find out what flags we pass on to qmake
QStringList configarguments; QStringList addedUserConfigArguments;
QtVersion::QmakeBuildConfigs defaultBuildConfiguration = bc->qtVersion()->defaultBuildConfig(); QStringList removedUserConfigArguments;
QtVersion::QmakeBuildConfigs projectBuildConfiguration = QtVersion::QmakeBuildConfig(bc->value("buildConfiguration").toInt()); bc->getConfigCommandLineArguments(&addedUserConfigArguments, &removedUserConfigArguments);
if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) if (!removedUserConfigArguments.isEmpty()) {
configarguments << "CONFIG-=debug_and_release"; foreach (const QString &removedConfig, removedUserConfigArguments)
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll)) arguments.append("CONFIG-=" + removedConfig);
configarguments << "CONFIG+=debug_and_release"; }
if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(projectBuildConfiguration & QtVersion::DebugBuild)) if (!addedUserConfigArguments.isEmpty()) {
configarguments << "CONFIG+=release"; foreach (const QString &addedConfig, addedUserConfigArguments)
if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (projectBuildConfiguration & QtVersion::DebugBuild)) arguments.append("CONFIG+=" + addedConfig);
configarguments << "CONFIG+=debug";
if (!configarguments.isEmpty())
arguments << configarguments;
} else {
qWarning()<< "The project should always have a qmake build configuration set";
} }
if (!additonalArguments.isEmpty()) if (!additonalArguments.isEmpty())

View File

@@ -565,34 +565,11 @@ void MaemoRunConfiguration::updateTarget()
reader->setCumulative(false); reader->setCumulative(false);
reader->setQtVersion(qtVersion); reader->setQtVersion(qtVersion);
// Find out what flags we pass on to qmake, this code is duplicated in // Find out what flags we pass on to qmake
// the qmake step
QtVersion::QmakeBuildConfigs defaultBuildConfiguration =
qtVersion->defaultBuildConfig();
QtVersion::QmakeBuildConfig projectBuildConfiguration =
QtVersion::QmakeBuildConfig(qt4Project->activeBuildConfiguration()
->value("buildConfiguration").toInt());
QStringList addedUserConfigArguments; QStringList addedUserConfigArguments;
QStringList removedUserConfigArguments; QStringList removedUserConfigArguments;
if ((defaultBuildConfiguration & QtVersion::BuildAll) qt4bc->getConfigCommandLineArguments(&addedUserConfigArguments, &removedUserConfigArguments);
&& !(projectBuildConfiguration & QtVersion::BuildAll)) reader->setConfigCommandLineArguments(addedUserConfigArguments, removedUserConfigArguments);
removedUserConfigArguments << "debug_and_release";
if (!(defaultBuildConfiguration & QtVersion::BuildAll)
&& (projectBuildConfiguration & QtVersion::BuildAll))
addedUserConfigArguments << "debug_and_release";
if ((defaultBuildConfiguration & QtVersion::DebugBuild)
&& !(projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "release";
if (!(defaultBuildConfiguration & QtVersion::DebugBuild)
&& (projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "debug";
reader->setUserConfigCmdArgs(addedUserConfigArguments,
removedUserConfigArguments);
if (!reader->readProFile(m_proFilePath)) { if (!reader->readProFile(m_proFilePath)) {
delete reader; delete reader;

View File

@@ -286,22 +286,11 @@ void S60DeviceRunConfiguration::updateTarget()
reader->setCumulative(false); reader->setCumulative(false);
reader->setQtVersion(qtVersion); reader->setQtVersion(qtVersion);
// Find out what flags we pass on to qmake, this code is duplicated in the qmake step // Find out what flags we pass on to qmake
QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qtVersion->defaultBuildConfig();
QtVersion::QmakeBuildConfigs projectBuildConfiguration =
QtVersion::QmakeBuildConfigs(qt4bc->value("buildConfiguration").toInt());
QStringList addedUserConfigArguments; QStringList addedUserConfigArguments;
QStringList removedUserConfigArguments; QStringList removedUserConfigArguments;
if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) qt4bc->getConfigCommandLineArguments(&addedUserConfigArguments, &removedUserConfigArguments);
removedUserConfigArguments << "debug_and_release"; reader->setConfigCommandLineArguments(addedUserConfigArguments, removedUserConfigArguments);
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll))
addedUserConfigArguments << "debug_and_release";
if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "release";
if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "debug";
reader->setUserConfigCmdArgs(addedUserConfigArguments, removedUserConfigArguments);
if (!reader->readProFile(m_proFilePath)) { if (!reader->readProFile(m_proFilePath)) {
delete reader; delete reader;
@@ -346,7 +335,7 @@ void S60DeviceRunConfiguration::updateTarget()
m_platform = QLatin1String("armv6"); m_platform = QLatin1String("armv6");
break; break;
} }
if (projectBuildConfiguration & QtVersion::DebugBuild) if (qt4bc->qmakeBuildConfiguration() & QtVersion::DebugBuild)
m_target = QLatin1String("udeb"); m_target = QLatin1String("udeb");
else else
m_target = QLatin1String("urel"); m_target = QLatin1String("urel");

View File

@@ -133,21 +133,11 @@ void S60EmulatorRunConfiguration::updateTarget()
reader->setCumulative(false); reader->setCumulative(false);
reader->setQtVersion(qtVersion); reader->setQtVersion(qtVersion);
// Find out what flags we pass on to qmake, this code is duplicated in the qmake step // Find out what flags we pass on to qmake
QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qtVersion->defaultBuildConfig();
QtVersion::QmakeBuildConfigs projectBuildConfiguration = QtVersion::QmakeBuildConfig(qt4bc->value("buildConfiguration").toInt());
QStringList addedUserConfigArguments; QStringList addedUserConfigArguments;
QStringList removedUserConfigArguments; QStringList removedUserConfigArguments;
if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) qt4bc->getConfigCommandLineArguments(&addedUserConfigArguments, &removedUserConfigArguments);
removedUserConfigArguments << "debug_and_release"; reader->setConfigCommandLineArguments(addedUserConfigArguments, removedUserConfigArguments);
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll))
addedUserConfigArguments << "debug_and_release";
if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "release";
if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "debug";
reader->setUserConfigCmdArgs(addedUserConfigArguments, removedUserConfigArguments);
if (!reader->readProFile(m_proFilePath)) { if (!reader->readProFile(m_proFilePath)) {
delete reader; delete reader;
@@ -157,7 +147,7 @@ void S60EmulatorRunConfiguration::updateTarget()
QString baseDir = S60Manager::instance()->deviceForQtVersion(qtVersion).epocRoot; QString baseDir = S60Manager::instance()->deviceForQtVersion(qtVersion).epocRoot;
QString qmakeBuildConfig = "urel"; QString qmakeBuildConfig = "urel";
if (projectBuildConfiguration & QtVersion::DebugBuild) if (qt4bc->qmakeBuildConfiguration() & QtVersion::DebugBuild)
qmakeBuildConfig = "udeb"; qmakeBuildConfig = "udeb";
baseDir += "/epoc32/release/winscw/" + qmakeBuildConfig; baseDir += "/epoc32/release/winscw/" + qmakeBuildConfig;

View File

@@ -133,7 +133,7 @@ QString Qt4BuildConfiguration::makeCommand() const
} }
#ifdef QTCREATOR_WITH_S60 #ifdef QTCREATOR_WITH_S60
static inline QString symbianMakeTarget(QtVersion::QmakeBuildConfig buildConfig, static inline QString symbianMakeTarget(QtVersion::QmakeBuildConfigs buildConfig,
const QString &type) const QString &type)
{ {
QString rc = (buildConfig & QtVersion::DebugBuild) ? QString rc = (buildConfig & QtVersion::DebugBuild) ?
@@ -149,8 +149,7 @@ QString Qt4BuildConfiguration::defaultMakeTarget() const
ToolChain *tc = toolChain(); ToolChain *tc = toolChain();
if (!tc) if (!tc)
return QString::null; return QString::null;
const QtVersion::QmakeBuildConfig buildConfig const QtVersion::QmakeBuildConfigs buildConfig = qmakeBuildConfiguration();
= QtVersion::QmakeBuildConfig(value("buildConfiguration").toInt());
switch (tc->type()) { switch (tc->type()) {
case ToolChain::GCCE: case ToolChain::GCCE:
@@ -279,7 +278,7 @@ bool Qt4BuildConfiguration::compareToImportFrom(const QString &workingDirectory)
// same qtversion // same qtversion
QPair<QtVersion::QmakeBuildConfigs, QStringList> result = QPair<QtVersion::QmakeBuildConfigs, QStringList> result =
QtVersionManager::scanMakeFile(workingDirectory, version->defaultBuildConfig()); QtVersionManager::scanMakeFile(workingDirectory, version->defaultBuildConfig());
if (QtVersion::QmakeBuildConfig(value("buildConfiguration").toInt()) == result.first) { if (qmakeBuildConfiguration() == result.first) {
// The QMake Build Configuration are the same, // The QMake Build Configuration are the same,
// now compare arguments lists // now compare arguments lists
// we have to compare without the spec/platform cmd argument // we have to compare without the spec/platform cmd argument
@@ -402,3 +401,26 @@ QString Qt4BuildConfiguration::extractSpecFromArgumentList(const QStringList &li
return parsedSpec; return parsedSpec;
} }
QtVersion::QmakeBuildConfigs Qt4BuildConfiguration::qmakeBuildConfiguration() const
{
return QtVersion::QmakeBuildConfigs(value("buildConfiguration").toInt());
}
void Qt4BuildConfiguration::getConfigCommandLineArguments(QStringList *addedUserConfigs, QStringList *removedUserConfigs) const
{
QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qtVersion()->defaultBuildConfig();
QtVersion::QmakeBuildConfigs userBuildConfiguration = qmakeBuildConfiguration();
if (removedUserConfigs) {
if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(userBuildConfiguration & QtVersion::BuildAll))
(*removedUserConfigs) << "debug_and_release";
}
if (addedUserConfigs) {
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (userBuildConfiguration & QtVersion::BuildAll))
(*addedUserConfigs) << "debug_and_release";
if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(userBuildConfiguration & QtVersion::DebugBuild))
(*addedUserConfigs) << "release";
if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (userBuildConfiguration & QtVersion::DebugBuild))
(*addedUserConfigs) << "debug";
}
}

View File

@@ -30,13 +30,14 @@
#ifndef QT4BUILDCONFIGURATION_H #ifndef QT4BUILDCONFIGURATION_H
#define QT4BUILDCONFIGURATION_H #define QT4BUILDCONFIGURATION_H
#include "qtversionmanager.h"
#include <projectexplorer/buildconfiguration.h> #include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/toolchain.h> #include <projectexplorer/toolchain.h>
namespace Qt4ProjectManager { namespace Qt4ProjectManager {
class Qt4Project; class Qt4Project;
class QtVersion;
class QMakeStep; class QMakeStep;
class MakeStep; class MakeStep;
@@ -98,6 +99,9 @@ public:
static QStringList removeSpecFromArgumentList(const QStringList &old); static QStringList removeSpecFromArgumentList(const QStringList &old);
static QString extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version); static QString extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version);
QtVersion::QmakeBuildConfigs qmakeBuildConfiguration() const;
void getConfigCommandLineArguments(QStringList *addedUserConfigs, QStringList *removedUserConfigs) const;
signals: signals:
void qtVersionChanged(); void qtVersionChanged();
}; };

View File

@@ -574,21 +574,11 @@ void Qt4RunConfiguration::updateTarget()
reader->setCumulative(false); reader->setCumulative(false);
reader->setQtVersion(qt4bc->qtVersion()); reader->setQtVersion(qt4bc->qtVersion());
// Find out what flags we pass on to qmake, this code is duplicated in the qmake step // Find out what flags we pass on to qmake
QtVersion::QmakeBuildConfigs defaultBuildConfiguration = qt4bc->qtVersion()->defaultBuildConfig();
QtVersion::QmakeBuildConfigs projectBuildConfiguration = QtVersion::QmakeBuildConfig(qt4bc->value("buildConfiguration").toInt());
QStringList addedUserConfigArguments; QStringList addedUserConfigArguments;
QStringList removedUserConfigArguments; QStringList removedUserConfigArguments;
if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) qt4bc->getConfigCommandLineArguments(&addedUserConfigArguments, &removedUserConfigArguments);
removedUserConfigArguments << "debug_and_release"; reader->setConfigCommandLineArguments(addedUserConfigArguments, removedUserConfigArguments);
if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll))
addedUserConfigArguments << "debug_and_release";
if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "release";
if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (projectBuildConfiguration & QtVersion::DebugBuild))
addedUserConfigArguments << "debug";
reader->setUserConfigCmdArgs(addedUserConfigArguments, removedUserConfigArguments);
if (!reader->readProFile(m_proFilePath)) { if (!reader->readProFile(m_proFilePath)) {
delete reader; delete reader;
@@ -618,7 +608,7 @@ void Qt4RunConfiguration::updateTarget()
if (reader->values("CONFIG").contains("debug_and_release_target")) { if (reader->values("CONFIG").contains("debug_and_release_target")) {
//qDebug()<<"reader has debug_and_release_target"; //qDebug()<<"reader has debug_and_release_target";
QString qmakeBuildConfig = "release"; QString qmakeBuildConfig = "release";
if (projectBuildConfiguration & QtVersion::DebugBuild) if (qt4bc->qmakeBuildConfiguration() & QtVersion::DebugBuild)
qmakeBuildConfig = "debug"; qmakeBuildConfig = "debug";
if (!reader->contains("DESTDIR")) if (!reader->contains("DESTDIR"))
m_workingDir += QLatin1Char('/') + qmakeBuildConfig; m_workingDir += QLatin1Char('/') + qmakeBuildConfig;

View File

@@ -3068,7 +3068,7 @@ void ProFileEvaluator::setOutputDir(const QString &dir)
d->m_outputDir = dir; d->m_outputDir = dir;
} }
void ProFileEvaluator::setUserConfigCmdArgs(const QStringList &addUserConfigCmdArgs, const QStringList &removeUserConfigCmdArgs) void ProFileEvaluator::setConfigCommandLineArguments(const QStringList &addUserConfigCmdArgs, const QStringList &removeUserConfigCmdArgs)
{ {
d->m_addUserConfigCmdArgs = addUserConfigCmdArgs; d->m_addUserConfigCmdArgs = addUserConfigCmdArgs;
d->m_removeUserConfigCmdArgs = removeUserConfigCmdArgs; d->m_removeUserConfigCmdArgs = removeUserConfigCmdArgs;

View File

@@ -112,7 +112,7 @@ public:
// -nocache, -cache, -spec, QMAKESPEC // -nocache, -cache, -spec, QMAKESPEC
// -set persistent value // -set persistent value
void setUserConfigCmdArgs(const QStringList &addUserConfigCmdArgs, const QStringList &removeUserConfigCmdArgs); void setConfigCommandLineArguments(const QStringList &addUserConfigCmdArgs, const QStringList &removeUserConfigCmdArgs);
void setParsePreAndPostFiles(bool on); // Default is true void setParsePreAndPostFiles(bool on); // Default is true
bool queryProFile(ProFile *pro); bool queryProFile(ProFile *pro);