Some steps towards making qmakestep and makestep not mandotary.

Also fix a small bug with the import label.
This commit is contained in:
dt
2009-07-27 15:02:34 +02:00
parent a4bb16c95f
commit f35a0f5429
3 changed files with 27 additions and 15 deletions

View File

@@ -116,7 +116,7 @@ bool QMakeStep::init(const QString &name)
if (QDir(workingDirectory).exists(QLatin1String("Makefile"))) {
QString qtPath = QtVersionManager::findQtVersionFromMakefile(workingDirectory);
if (qtVersion->path() == qtPath) {
needToRunQMake = m_pro->compareBuildConfigurationToImportFrom(name, workingDirectory);
needToRunQMake = !m_pro->compareBuildConfigurationToImportFrom(name, workingDirectory);
}
}

View File

@@ -724,7 +724,7 @@ void Qt4Project::addDefaultBuild()
// Migrate settings
QMakeStep *qs = qmakeStep();
foreach (const QString &buildConfiguration, buildConfigurations()) {
QVariant v = qs->value(buildConfiguration, "buildConfiguration");
QVariant v = qs ? qs->value(buildConfiguration, "buildConfiguration") : QVariant();
if (v.isValid()) {
qs->setValue(buildConfiguration, "buildConfiguration", QVariant());
setValue(buildConfiguration, "buildConfiguration", v);
@@ -736,6 +736,7 @@ void Qt4Project::addDefaultBuild()
}
}
// Restoring configuration
foreach(const QString &bc, buildConfigurations()) {
setValue(bc, "addQDumper", QVariant());
@@ -1137,9 +1138,11 @@ QString Qt4Project::extractSpecFromArgumentList(const QStringList &list)
return QString();
}
// returns true if both are equal
bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfiguration, const QString &workingDirectory)
{
if (QDir(workingDirectory).exists(QLatin1String("Makefile"))) {
QMakeStep *qs = qmakeStep();
if (QDir(workingDirectory).exists(QLatin1String("Makefile")) && qs) {
QString qtPath = QtVersionManager::findQtVersionFromMakefile(workingDirectory);
QtVersion *version = qtVersion(buildConfiguration);
if (version->path() == qtPath) {
@@ -1151,7 +1154,7 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
// now compare arguments lists
// we have to compare without the spec/platform cmd argument
// and compare that on its own
QString actualSpec = extractSpecFromArgumentList(qmakeStep()->value(buildConfiguration, "qmakeArgs").toStringList());
QString actualSpec = extractSpecFromArgumentList(qs->value(buildConfiguration, "qmakeArgs").toStringList());
if (actualSpec.isEmpty())
actualSpec = version->mkspec();
QString parsedSpec = extractSpecFromArgumentList(result.second);
@@ -1176,7 +1179,7 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
if (QFileInfo(parsedSpec).isRelative())
parsedSpec = QDir::cleanPath(workingDirectory + "/" + parsedSpec);
QStringList actualArgs = removeSpecFromArgumentList(qmakeStep()->value(buildConfiguration, "qmakeArgs").toStringList());
QStringList actualArgs = removeSpecFromArgumentList(qs->value(buildConfiguration, "qmakeArgs").toStringList());
QStringList parsedArgs = removeSpecFromArgumentList(result.second);
#ifdef Q_OS_WIN
@@ -1190,12 +1193,12 @@ bool Qt4Project::compareBuildConfigurationToImportFrom(const QString &buildConfi
qDebug()<<"Parsed spec:"<<parsedSpec;
if (actualArgs == parsedArgs && actualSpec == parsedSpec)
return false;
}
}
}
return true;
}
}
}
return false;
}
/*!

View File

@@ -201,17 +201,24 @@ void Qt4ProjectConfigWidget::updateImportLabel()
{
bool visible = false;
// we only show if we actually have a qmake and makestep
if (m_pro->qmakeStep() && m_pro->makeStep()) {
QString qtPath = QtVersionManager::findQtVersionFromMakefile(m_pro->buildDirectory(m_buildConfiguration));
QtVersion *version = m_pro->qtVersion(m_buildConfiguration);
// check that there's a makefile
if (!qtPath.isEmpty()) {
// and that the makefile path is different from the current version
if (qtPath != (version ? version->path() : QString())) {
// import enable
visible = true;
} else {
// check that the qmake flags, arguments match
visible = !m_pro->compareBuildConfigurationToImportFrom(m_buildConfiguration, m_pro->buildDirectory(m_buildConfiguration));
}
} else {
visible = false;
}
}
m_ui->importLabel->setVisible(visible);
}
@@ -231,6 +238,8 @@ void Qt4ProjectConfigWidget::shadowBuildLineEditTextChanged()
void Qt4ProjectConfigWidget::importLabelClicked()
{
if (!m_pro->qmakeStep() || !m_pro->makeStep())
return;
QString directory = m_pro->buildDirectory(m_buildConfiguration);
if (!directory.isEmpty()) {
QString qtPath = QtVersionManager::findQtVersionFromMakefile(directory);