aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-05-06 16:46:03 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-05-08 13:07:31 +0000
commitb1b52ac6746f5e7d935ecb106e48a87b656447c0 (patch)
tree03504e4e0742fa786698474bcc7fef69920e8428 /src
parent75e408584ac9a60c3a4dd714f5620814485fcdca (diff)
QmakeProjectManager: Do not ignore files from included .pri files
... when setting up extra compilers. For example, the code model was not able to resolve included ui_*.h files in a project that wasn't built yet, if the respective FORMS declaration came from a .pri file. Fixes: QTCREATORBUG-22395 Change-Id: I75c4b2b38fec209519adb563d579ecd3a17fe042 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp15
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeparsernodes.h4
2 files changed, 16 insertions, 3 deletions
diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
index 7b050a5ed6..dad44e2f6b 100644
--- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.cpp
@@ -234,6 +234,16 @@ QSet<FileName> QmakePriFile::files(const FileType &type) const
return m_files.value(type);
}
+const QSet<FileName> QmakePriFile::collectFiles(const FileType &type) const
+{
+ QSet<FileName> allFiles = files(type);
+ for (const QmakePriFile * const priFile : qAsConst(m_children)) {
+ if (!dynamic_cast<const QmakeProFile *>(priFile))
+ allFiles.unite(priFile->collectFiles(type));
+ }
+ return allFiles;
+}
+
QmakePriFile::~QmakePriFile()
{
watchFolders( {} );
@@ -1958,11 +1968,10 @@ QList<ExtraCompiler *> QmakeProFile::extraCompilers() const
void QmakeProFile::setupExtraCompiler(const FileName &buildDir,
const FileType &fileType, ExtraCompilerFactory *factory)
{
- foreach (const FileName &fn, files(fileType)) {
+ for (const FileName &fn : collectFiles(fileType)) {
const FileNameList generated = generatedFiles(buildDir, fn, fileType);
- if (!generated.isEmpty()) {
+ if (!generated.isEmpty())
m_extraCompilers.append(factory->create(m_project, fn, generated));
- }
}
}
diff --git a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
index 68b406fe63..4c5b7048eb 100644
--- a/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
+++ b/src/plugins/qmakeprojectmanager/qmakeparsernodes.h
@@ -133,8 +133,12 @@ public:
void makeEmpty();
+ // Files of the specified type declared in this file.
QSet<Utils::FileName> files(const ProjectExplorer::FileType &type) const;
+ // Files of the specified type declared in this file and in included .pri files.
+ const QSet<Utils::FileName> collectFiles(const ProjectExplorer::FileType &type) const;
+
void update(const Internal::QmakePriFileEvalResult &result);
bool canAddSubProject(const QString &proFilePath) const;