Fixed resolution of QMAKESPEC on Windows.
base_vars["QMAKESPEC_ORIGINAL"] is not guaranteed to be set the first time resolveSpec is called, since an include() can wipe it out. Change it so that resolveSpec is called repeatedly until some QMAKESPEC_ORIGINAL is set. The code which attempted to remove all of the path up to the last / was incorrect and must have been dead code (or its wrongness didn't matter) until now. Change-Id: I2b31ae10fc284ac7293c3cd95e5a2fd503ca7ab0 Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
This commit is contained in:
parent
804e93462e
commit
8583bc914a
@ -1528,12 +1528,15 @@ QMakeProject::resolveSpec(QString *spec, const QString &qmakespec)
|
|||||||
// We can't resolve symlinks as they do on Unix, so configure.exe puts the source of the
|
// We can't resolve symlinks as they do on Unix, so configure.exe puts the source of the
|
||||||
// qmake.conf at the end of the default/qmake.conf in the QMAKESPEC_ORG variable.
|
// qmake.conf at the end of the default/qmake.conf in the QMAKESPEC_ORG variable.
|
||||||
const QStringList &spec_org = base_vars["QMAKESPEC_ORIGINAL"];
|
const QStringList &spec_org = base_vars["QMAKESPEC_ORIGINAL"];
|
||||||
if (!spec_org.isEmpty()) {
|
if (spec_org.isEmpty()) {
|
||||||
|
// try again the next time around
|
||||||
|
*spec = QString();
|
||||||
|
} else {
|
||||||
*spec = spec_org.at(0);
|
*spec = spec_org.at(0);
|
||||||
#endif
|
#endif
|
||||||
int lastSlash = spec->lastIndexOf(QLatin1Char('/'));
|
int lastSlash = spec->lastIndexOf(QLatin1Char('/'));
|
||||||
if (lastSlash != -1)
|
if (lastSlash != -1)
|
||||||
spec->remove(lastSlash + 1);
|
spec->remove(0, lastSlash + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user