diff options
author | Eike Ziller <eike.ziller@qt.io> | 2024-02-15 10:33:27 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2024-03-04 09:01:02 +0000 |
commit | 832fde9e0e359c5b6a7ce8d2f3441028acd03206 (patch) | |
tree | e32296c20116bea1f21b6d07ffdccc34a562a5ff /src/plugins/cmakeprojectmanager | |
parent | 5d41ab126f84dccf9351deaeb296751aeb6ed8e3 (diff) |
CMake: Exclude non-project CMake files from search
All the CMake files the belong to packages found with `find_package` are
part of the project tree, but we shouldn't include them when searching
through "files in the project".
Set listInProjects to false for these files.
Fixes: QTCREATORBUG-30372
Change-Id: If39d477f14dc3207f4e2dd66b2f3969811dbd863
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Diffstat (limited to 'src/plugins/cmakeprojectmanager')
-rw-r--r-- | src/plugins/cmakeprojectmanager/projecttreehelper.cpp | 16 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/projecttreehelper.h | 3 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp index fb7ca30166..e17505095a 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp @@ -35,7 +35,8 @@ void addCMakeVFolder(FolderNode *base, int priority, const QString &displayName, std::vector<std::unique_ptr<FileNode>> &&files, - bool sourcesOrHeaders) + bool sourcesOrHeaders, + bool listInProject) { if (files.size() == 0) return; @@ -45,6 +46,10 @@ void addCMakeVFolder(FolderNode *base, folder = newFolder.get(); base->addNode(std::move(newFolder)); } + if (!listInProject) { + for (auto it = files.begin(); it != files.end(); ++it) + (*it)->setListInProject(false); + } folder->addNestedNodes(std::move(files)); folder->forEachFolderNode([] (FolderNode *fn) { fn->compress(); }); } @@ -68,10 +73,7 @@ void addCMakeInputs(FolderNode *root, std::unique_ptr<ProjectNode> cmakeVFolder = std::make_unique<CMakeInputsNode>(root->filePath()); QSet<Utils::FilePath> knownFiles; - root->forEachGenericNode([&knownFiles](const Node *n) { - if (n->listInProject()) - knownFiles.insert(n->filePath()); - }); + root->forEachGenericNode([&knownFiles](const Node *n) { knownFiles.insert(n->filePath()); }); addCMakeVFolder(cmakeVFolder.get(), sourceDir, @@ -87,7 +89,9 @@ void addCMakeInputs(FolderNode *root, Utils::FilePath(), 10, Tr::tr("<Other Locations>"), - removeKnownNodes(knownFiles, std::move(rootInputs))); + removeKnownNodes(knownFiles, std::move(rootInputs)), + /*sourcesOrHeaders=*/false, + /*listInProject=*/false); root->addNode(std::move(cmakeVFolder)); } diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.h b/src/plugins/cmakeprojectmanager/projecttreehelper.h index 08707360ed..bcd5500db9 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.h +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.h @@ -21,7 +21,8 @@ void addCMakeVFolder(ProjectExplorer::FolderNode *base, int priority, const QString &displayName, std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&files, - bool sourcesOrHeaders = false); + bool sourcesOrHeaders = false, + bool listInProject = true); std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&removeKnownNodes( const QSet<Utils::FilePath> &knownFiles, |