CMake: Use a CMakeProjectNode as top level cmake node

Change-Id: I6e68b971cf490b9b064a2866bd99865a7f4a7bd9
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Tobias Hunger
2017-03-14 15:35:02 +01:00
parent b8417e0f0c
commit 6e91fe5046
10 changed files with 25 additions and 23 deletions

View File

@@ -257,7 +257,7 @@ bool BuildDirManager::persistCMakeState()
return true; return true;
} }
void BuildDirManager::generateProjectTree(CMakeListsNode *root, const QList<const FileNode *> &allFiles) void BuildDirManager::generateProjectTree(CMakeProjectNode *root, const QList<const FileNode *> &allFiles)
{ {
QTC_ASSERT(m_reader, return); QTC_ASSERT(m_reader, return);

View File

@@ -69,7 +69,7 @@ public:
bool updateCMakeStateBeforeBuild(); bool updateCMakeStateBeforeBuild();
bool persistCMakeState(); bool persistCMakeState();
void generateProjectTree(CMakeListsNode *root, void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &allFiles); const QList<const ProjectExplorer::FileNode *> &allFiles);
void updateCodeModel(CppTools::RawProjectParts &rpps); void updateCodeModel(CppTools::RawProjectParts &rpps);

View File

@@ -42,7 +42,7 @@ namespace CMakeProjectManager {
namespace Internal { namespace Internal {
class CMakeBuildConfiguration; class CMakeBuildConfiguration;
class CMakeListsNode; class CMakeProjectNode;
class BuildDirReader : public QObject class BuildDirReader : public QObject
{ {
@@ -95,7 +95,7 @@ public:
virtual CMakeConfig takeParsedConfiguration() = 0; virtual CMakeConfig takeParsedConfiguration() = 0;
virtual QList<CMakeBuildTarget> buildTargets() const = 0; virtual QList<CMakeBuildTarget> buildTargets() const = 0;
virtual void generateProjectTree(CMakeListsNode *root, virtual void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &allFiles) = 0; const QList<const ProjectExplorer::FileNode *> &allFiles) = 0;
virtual void updateCodeModel(CppTools::RawProjectParts &rpps) = 0; virtual void updateCodeModel(CppTools::RawProjectParts &rpps) = 0;

View File

@@ -215,13 +215,13 @@ QList<CMakeBuildTarget> CMakeBuildConfiguration::buildTargets() const
return m_buildDirManager->buildTargets(); return m_buildDirManager->buildTargets();
} }
CMakeListsNode * CMakeProjectNode *
CMakeBuildConfiguration::generateProjectTree(const QList<const FileNode*> &allFiles) const CMakeBuildConfiguration::generateProjectTree(const QList<const FileNode*> &allFiles) const
{ {
auto root = new CMakeListsNode(target()->project()->projectDirectory());
if (!m_buildDirManager || m_buildDirManager->isParsing()) if (!m_buildDirManager || m_buildDirManager->isParsing())
return nullptr; return nullptr;
auto root = new CMakeProjectNode(target()->project()->projectDirectory());
m_buildDirManager->generateProjectTree(root, allFiles); m_buildDirManager->generateProjectTree(root, allFiles);
return root; return root;
} }

View File

@@ -47,7 +47,7 @@ namespace Internal {
class BuildDirManager; class BuildDirManager;
class CMakeBuildConfigurationFactory; class CMakeBuildConfigurationFactory;
class CMakeBuildSettingsWidget; class CMakeBuildSettingsWidget;
class CMakeListsNode; class CMakeProjectNode;
class CMakeBuildConfiguration : public ProjectExplorer::BuildConfiguration class CMakeBuildConfiguration : public ProjectExplorer::BuildConfiguration
{ {
@@ -86,7 +86,7 @@ public:
void clearCache(); void clearCache();
QList<CMakeBuildTarget> buildTargets() const; QList<CMakeBuildTarget> buildTargets() const;
CMakeListsNode *generateProjectTree(const QList<const ProjectExplorer::FileNode *> &allFiles) const; CMakeProjectManager::Internal::CMakeProjectNode *generateProjectTree(const QList<const ProjectExplorer::FileNode *> &allFiles) const;
void updateCodeModel(CppTools::RawProjectParts &rpps); void updateCodeModel(CppTools::RawProjectParts &rpps);
static Utils::FileName static Utils::FileName

View File

@@ -231,7 +231,7 @@ static void addCMakeVFolder(FolderNode *base, const Utils::FileName &basePath, i
fn->compress(); fn->compress();
} }
static void addCMakeInputs(CMakeListsNode *root, static void addCMakeInputs(FolderNode *root,
const Utils::FileName &sourceDir, const Utils::FileName &sourceDir,
const Utils::FileName &buildDir, const Utils::FileName &buildDir,
QList<FileNode *> &sourceInputs, QList<FileNode *> &sourceInputs,
@@ -252,7 +252,7 @@ static void addCMakeInputs(CMakeListsNode *root,
rootInputs); rootInputs);
} }
void ServerModeReader::generateProjectTree(CMakeListsNode *root, void ServerModeReader::generateProjectTree(CMakeProjectNode *root,
const QList<const FileNode *> &allFiles) const QList<const FileNode *> &allFiles)
{ {
// Split up cmake inputs into useful chunks: // Split up cmake inputs into useful chunks:
@@ -527,7 +527,7 @@ void ServerModeReader::extractCacheData(const QVariantMap &data)
m_cmakeCache = config; m_cmakeCache = config;
} }
void ServerModeReader::addCMakeLists(CMakeListsNode *root, const QList<FileNode *> &cmakeLists) void ServerModeReader::addCMakeLists(CMakeProjectNode *root, const QList<FileNode *> &cmakeLists)
{ {
const QDir baseDir = QDir(m_parameters.sourceDirectory.toString()); const QDir baseDir = QDir(m_parameters.sourceDirectory.toString());
@@ -540,7 +540,7 @@ void ServerModeReader::addCMakeLists(CMakeListsNode *root, const QList<FileNode
}); });
} }
static CMakeListsNode *findCMakeNode(CMakeListsNode *root, const Utils::FileName &dir) static CMakeListsNode *findCMakeNode(FolderNode *root, const Utils::FileName &dir)
{ {
const Utils::FileName stepDir = dir; const Utils::FileName stepDir = dir;
const Utils::FileName topDir = root->filePath(); const Utils::FileName topDir = root->filePath();
@@ -558,7 +558,7 @@ static CMakeListsNode *findCMakeNode(CMakeListsNode *root, const Utils::FileName
return dynamic_cast<CMakeListsNode *>(result); return dynamic_cast<CMakeListsNode *>(result);
} }
static CMakeProjectNode *findOrCreateProjectNode(CMakeListsNode *root, const Utils::FileName &dir, static CMakeProjectNode *findOrCreateProjectNode(FolderNode *root, const Utils::FileName &dir,
const QString &displayName) const QString &displayName)
{ {
CMakeListsNode *cmln = findCMakeNode(root, dir); CMakeListsNode *cmln = findCMakeNode(root, dir);
@@ -576,7 +576,7 @@ static CMakeProjectNode *findOrCreateProjectNode(CMakeListsNode *root, const Uti
return pn; return pn;
} }
void ServerModeReader::addProjects(CMakeListsNode *root, void ServerModeReader::addProjects(CMakeProjectNode *root,
const QList<Project *> &projects, const QList<Project *> &projects,
const QList<const FileNode *> &allFiles) const QList<const FileNode *> &allFiles)
{ {
@@ -595,7 +595,7 @@ void ServerModeReader::addProjects(CMakeListsNode *root,
} }
} }
static CMakeTargetNode *findOrCreateTargetNode(CMakeListsNode *root, const Utils::FileName &dir, static CMakeTargetNode *findOrCreateTargetNode(FolderNode *root, const Utils::FileName &dir,
const QString &displayName) const QString &displayName)
{ {
CMakeListsNode *cmln = findCMakeNode(root, dir); CMakeListsNode *cmln = findCMakeNode(root, dir);
@@ -613,7 +613,7 @@ static CMakeTargetNode *findOrCreateTargetNode(CMakeListsNode *root, const Utils
return tn; return tn;
} }
void ServerModeReader::addTargets(CMakeListsNode *root, void ServerModeReader::addTargets(CMakeProjectNode *root,
const QList<ServerModeReader::Target *> &targets, const QList<ServerModeReader::Target *> &targets,
const QHash<FileName, QList<const FileNode *>> &headers) const QHash<FileName, QList<const FileNode *>> &headers)
{ {

View File

@@ -33,6 +33,8 @@
namespace CMakeProjectManager { namespace CMakeProjectManager {
namespace Internal { namespace Internal {
class CMakeListsNode;
class ServerModeReader : public BuildDirReader class ServerModeReader : public BuildDirReader
{ {
Q_OBJECT Q_OBJECT
@@ -54,7 +56,7 @@ public:
QList<CMakeBuildTarget> buildTargets() const final; QList<CMakeBuildTarget> buildTargets() const final;
CMakeConfig takeParsedConfiguration() final; CMakeConfig takeParsedConfiguration() final;
void generateProjectTree(CMakeListsNode *root, void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &allFiles) final; const QList<const ProjectExplorer::FileNode *> &allFiles) final;
void updateCodeModel(CppTools::RawProjectParts &rpps) final; void updateCodeModel(CppTools::RawProjectParts &rpps) final;
@@ -111,10 +113,10 @@ private:
void extractCMakeInputsData(const QVariantMap &data); void extractCMakeInputsData(const QVariantMap &data);
void extractCacheData(const QVariantMap &data); void extractCacheData(const QVariantMap &data);
void addCMakeLists(CMakeListsNode *root, const QList<ProjectExplorer::FileNode *> &cmakeLists); void addCMakeLists(CMakeProjectNode *root, const QList<ProjectExplorer::FileNode *> &cmakeLists);
void addProjects(CMakeListsNode *root, const QList<Project *> &projects, void addProjects(CMakeProjectNode *root, const QList<Project *> &projects,
const QList<const ProjectExplorer::FileNode *> &allFiles); const QList<const ProjectExplorer::FileNode *> &allFiles);
void addTargets(CMakeListsNode *root, const QList<Target *> &targets, void addTargets(CMakeProjectNode *root, const QList<Target *> &targets,
const QHash<Utils::FileName, QList<const ProjectExplorer::FileNode *>> &headers); const QHash<Utils::FileName, QList<const ProjectExplorer::FileNode *>> &headers);
void addFileGroups(ProjectExplorer::ProjectNode *targetRoot, void addFileGroups(ProjectExplorer::ProjectNode *targetRoot,
const Utils::FileName &sourceDirectory, const Utils::FileName &sourceDirectory,

View File

@@ -264,7 +264,7 @@ CMakeConfig TeaLeafReader::takeParsedConfiguration()
return result; return result;
} }
void TeaLeafReader::generateProjectTree(CMakeListsNode *root, const QList<const FileNode *> &allFiles) void TeaLeafReader::generateProjectTree(CMakeProjectNode *root, const QList<const FileNode *> &allFiles)
{ {
root->setDisplayName(m_projectName); root->setDisplayName(m_projectName);

View File

@@ -56,7 +56,7 @@ public:
QList<CMakeBuildTarget> buildTargets() const final; QList<CMakeBuildTarget> buildTargets() const final;
CMakeConfig takeParsedConfiguration() final; CMakeConfig takeParsedConfiguration() final;
void generateProjectTree(CMakeListsNode *root, void generateProjectTree(CMakeProjectNode *root,
const QList<const ProjectExplorer::FileNode *> &allFiles) final; const QList<const ProjectExplorer::FileNode *> &allFiles) final;
void updateCodeModel(CppTools::RawProjectParts &rpps) final; void updateCodeModel(CppTools::RawProjectParts &rpps) final;

View File

@@ -419,7 +419,7 @@ void Project::setDocument(Core::IDocument *doc)
d->m_document = doc; d->m_document = doc;
if (!d->m_rootProjectNode) { if (!d->m_rootProjectNode) {
auto newRoot = new ProjectNode(projectDirectory()); auto newRoot = new ProjectNode(projectFilePath());
newRoot->setDisplayName(displayName()); newRoot->setDisplayName(displayName());
newRoot->addNode(new FileNode(projectFilePath(), FileType::Project, false)); newRoot->addNode(new FileNode(projectFilePath(), FileType::Project, false));
setRootProjectNode(newRoot); setRootProjectNode(newRoot);