forked from qt-creator/qt-creator
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:
@@ -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);
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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,
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user