forked from qt-creator/qt-creator
qmake: Add method to find QmakePriFiles and QmakeProFiles
Change-Id: I04a75b94603b5483d5f9eaa827d08415c0a92985 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
committed by
Tim Jenssen
parent
bc64e91c5e
commit
4ab44b07e5
@@ -38,7 +38,6 @@
|
|||||||
#include <coreplugin/iversioncontrol.h>
|
#include <coreplugin/iversioncontrol.h>
|
||||||
#include <coreplugin/vcsmanager.h>
|
#include <coreplugin/vcsmanager.h>
|
||||||
#include <cpptools/cpptoolsconstants.h>
|
#include <cpptools/cpptoolsconstants.h>
|
||||||
#include <projectexplorer/nodesvisitor.h>
|
|
||||||
#include <projectexplorer/projectexplorer.h>
|
#include <projectexplorer/projectexplorer.h>
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
#include <projectexplorer/target.h>
|
#include <projectexplorer/target.h>
|
||||||
@@ -286,6 +285,18 @@ QVector<QmakePriFile *> QmakePriFile::children() const
|
|||||||
return m_children;
|
return m_children;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QmakePriFile *QmakePriFile::findPriFile(const FileName &fileName)
|
||||||
|
{
|
||||||
|
if (fileName == filePath())
|
||||||
|
return this;
|
||||||
|
for (QmakePriFile *n : children()) {
|
||||||
|
if (QmakePriFile *result = n->findPriFile(fileName))
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void QmakePriFile::makeEmpty()
|
void QmakePriFile::makeEmpty()
|
||||||
{
|
{
|
||||||
qDeleteAll(m_children);
|
qDeleteAll(m_children);
|
||||||
@@ -1113,40 +1124,9 @@ static ProjectType proFileTemplateTypeToProjectType(ProFileEvaluator::TemplateTy
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace {
|
QmakeProFile *QmakeProFile::findProFile(const FileName &fileName)
|
||||||
// feed all files accepted by any of the factories to the callback.
|
|
||||||
class FindGeneratorSourcesVisitor : public NodesVisitor
|
|
||||||
{
|
{
|
||||||
public:
|
return dynamic_cast<QmakeProFile *>(findPriFile(fileName));
|
||||||
FindGeneratorSourcesVisitor(
|
|
||||||
const QList<ProjectExplorer::ExtraCompilerFactory *> &factories,
|
|
||||||
std::function<void(FileNode *, ProjectExplorer::ExtraCompilerFactory *)> callback) :
|
|
||||||
factories(factories), callback(callback) {}
|
|
||||||
|
|
||||||
void visitFolderNode(FolderNode *folderNode) final
|
|
||||||
{
|
|
||||||
foreach (FileNode *fileNode, folderNode->fileNodes()) {
|
|
||||||
foreach (ProjectExplorer::ExtraCompilerFactory *factory, factories) {
|
|
||||||
if (factory->sourceType() == fileNode->fileType())
|
|
||||||
callback(fileNode, factory);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const QList<ProjectExplorer::ExtraCompilerFactory *> factories;
|
|
||||||
std::function<void(FileNode *, ProjectExplorer::ExtraCompilerFactory *)> callback;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
QmakeProFile *QmakeProFile::findProFileFor(const FileName &fileName) const
|
|
||||||
{
|
|
||||||
if (fileName == filePath())
|
|
||||||
return const_cast<QmakeProFile *>(this);
|
|
||||||
foreach (const QmakePriFile *n, children())
|
|
||||||
if (auto qmakeProFileNode = dynamic_cast<const QmakeProFile *>(n))
|
|
||||||
if (QmakeProFile *result = qmakeProFileNode->findProFileFor(fileName))
|
|
||||||
return result;
|
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QmakeProFile::makefile() const
|
QString QmakeProFile::makefile() const
|
||||||
|
|||||||
@@ -119,6 +119,9 @@ public:
|
|||||||
QmakePriFile *parent() const;
|
QmakePriFile *parent() const;
|
||||||
QmakeProject *project() const;
|
QmakeProject *project() const;
|
||||||
QVector<QmakePriFile *> children() const;
|
QVector<QmakePriFile *> children() const;
|
||||||
|
|
||||||
|
QmakePriFile *findPriFile(const Utils::FileName &fileName);
|
||||||
|
|
||||||
void makeEmpty();
|
void makeEmpty();
|
||||||
|
|
||||||
QSet<Utils::FileName> files(const ProjectExplorer::FileType &type) const;
|
QSet<Utils::FileName> files(const ProjectExplorer::FileType &type) const;
|
||||||
@@ -216,7 +219,7 @@ private:
|
|||||||
|
|
||||||
// Memory is cheap...
|
// Memory is cheap...
|
||||||
QMap<ProjectExplorer::FileType, QSet<Utils::FileName>> m_files;
|
QMap<ProjectExplorer::FileType, QSet<Utils::FileName>> m_files;
|
||||||
QSet<Utils::FileName> m_recursiveEnumerateFiles;
|
QSet<Utils::FileName> m_recursiveEnumerateFiles; // FIXME: Remove this?!
|
||||||
QSet<QString> m_watchedFolders;
|
QSet<QString> m_watchedFolders;
|
||||||
bool m_includedInExactParse = true;
|
bool m_includedInExactParse = true;
|
||||||
|
|
||||||
@@ -277,6 +280,7 @@ public:
|
|||||||
QString displayName() const final;
|
QString displayName() const final;
|
||||||
|
|
||||||
QList<QmakeProFile *> allProFiles();
|
QList<QmakeProFile *> allProFiles();
|
||||||
|
QmakeProFile *findProFile(const Utils::FileName &fileName);
|
||||||
|
|
||||||
ProjectType projectType() const;
|
ProjectType projectType() const;
|
||||||
|
|
||||||
@@ -294,7 +298,6 @@ public:
|
|||||||
const Utils::FileName &sourceFile) const;
|
const Utils::FileName &sourceFile) const;
|
||||||
QList<ProjectExplorer::ExtraCompiler *> extraCompilers() const;
|
QList<ProjectExplorer::ExtraCompiler *> extraCompilers() const;
|
||||||
|
|
||||||
QmakeProFile *findProFileFor(const Utils::FileName &string) const;
|
|
||||||
TargetParserInformation targetInformation() const;
|
TargetParserInformation targetInformation() const;
|
||||||
|
|
||||||
InstallsParserList installsList() const;
|
InstallsParserList installsList() const;
|
||||||
@@ -333,8 +336,6 @@ private:
|
|||||||
void asyncEvaluate(QFutureInterface<Internal::QmakeEvalResult *> &fi, Internal::QmakeEvalInput input);
|
void asyncEvaluate(QFutureInterface<Internal::QmakeEvalResult *> &fi, Internal::QmakeEvalInput input);
|
||||||
void cleanupProFileReaders();
|
void cleanupProFileReaders();
|
||||||
|
|
||||||
using VariablesHash = QHash<Variable, QStringList>;
|
|
||||||
|
|
||||||
void updateGeneratedFiles(const Utils::FileName &buildDir);
|
void updateGeneratedFiles(const Utils::FileName &buildDir);
|
||||||
|
|
||||||
static QString uiDirPath(QtSupport::ProFileReader *reader, const Utils::FileName &buildDir);
|
static QString uiDirPath(QtSupport::ProFileReader *reader, const Utils::FileName &buildDir);
|
||||||
@@ -352,7 +353,10 @@ private:
|
|||||||
|
|
||||||
QString m_displayName;
|
QString m_displayName;
|
||||||
ProjectType m_projectType = ProjectType::Invalid;
|
ProjectType m_projectType = ProjectType::Invalid;
|
||||||
|
|
||||||
|
using VariablesHash = QHash<Variable, QStringList>;
|
||||||
VariablesHash m_varValues;
|
VariablesHash m_varValues;
|
||||||
|
|
||||||
QList<ProjectExplorer::ExtraCompiler *> m_extraCompilers;
|
QList<ProjectExplorer::ExtraCompiler *> m_extraCompilers;
|
||||||
|
|
||||||
TargetParserInformation m_qmakeTargetInformation;
|
TargetParserInformation m_qmakeTargetInformation;
|
||||||
|
|||||||
Reference in New Issue
Block a user