Search the include paths for json files containing plugin info
This fixes shadow builds with autogenerated .json files as e.g. used by Qt Creator. Change-Id: Ibb783b05d97d996100da4b0dca859fa3f310dc83 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
This commit is contained in:
parent
be4f8393e4
commit
a806c6a8b2
@ -394,6 +394,7 @@ int runMoc(int _argc, char **_argv)
|
||||
}
|
||||
|
||||
moc.currentFilenames.push(filename);
|
||||
moc.includes = pp.includes;
|
||||
|
||||
// 1. preprocess
|
||||
moc.symbols = pp.preprocessed(moc.filename, in);
|
||||
|
@ -1103,6 +1103,18 @@ void Moc::parsePluginData(ClassDef *def)
|
||||
next(STRING_LITERAL);
|
||||
QByteArray metaDataFile = unquotedLexem();
|
||||
QFileInfo fi(QFileInfo(QString::fromLocal8Bit(currentFilenames.top().constData())).dir(), QString::fromLocal8Bit(metaDataFile.constData()));
|
||||
for (int j = 0; j < includes.size() && !fi.exists(); ++j) {
|
||||
const IncludePath &p = includes.at(j);
|
||||
if (p.isFrameworkPath)
|
||||
continue;
|
||||
|
||||
fi.setFile(QString::fromLocal8Bit(p.path.constData()), QString::fromLocal8Bit(metaDataFile.constData()));
|
||||
// try again, maybe there's a file later in the include paths with the same name
|
||||
if (fi.isDir()) {
|
||||
fi = QFileInfo();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!fi.exists()) {
|
||||
QByteArray msg;
|
||||
msg += "Plugin Metadata file ";
|
||||
|
@ -56,6 +56,15 @@ public:
|
||||
bool displayWarnings;
|
||||
bool displayNotes;
|
||||
|
||||
struct IncludePath
|
||||
{
|
||||
inline explicit IncludePath(const QByteArray &_path)
|
||||
: path(_path), isFrameworkPath(false) {}
|
||||
QByteArray path;
|
||||
bool isFrameworkPath;
|
||||
};
|
||||
QList<IncludePath> includes;
|
||||
|
||||
QStack<QByteArray> currentFilenames;
|
||||
|
||||
inline bool hasNext() const { return (index < symbols.size()); }
|
||||
|
@ -69,14 +69,6 @@ class Preprocessor : public Parser
|
||||
public:
|
||||
Preprocessor(){}
|
||||
static bool preprocessOnly;
|
||||
struct IncludePath
|
||||
{
|
||||
inline explicit IncludePath(const QByteArray &_path)
|
||||
: path(_path), isFrameworkPath(false) {}
|
||||
QByteArray path;
|
||||
bool isFrameworkPath;
|
||||
};
|
||||
QList<IncludePath> includes;
|
||||
QList<QByteArray> frameworks;
|
||||
QSet<QByteArray> preprocessedIncludes;
|
||||
Macros macros;
|
||||
|
Loading…
Reference in New Issue
Block a user