aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/cmakeprojectmanager
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2024-02-15 10:33:27 +0100
committerEike Ziller <eike.ziller@qt.io>2024-03-04 09:01:02 +0000
commit832fde9e0e359c5b6a7ce8d2f3441028acd03206 (patch)
treee32296c20116bea1f21b6d07ffdccc34a562a5ff /src/plugins/cmakeprojectmanager
parent5d41ab126f84dccf9351deaeb296751aeb6ed8e3 (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.cpp16
-rw-r--r--src/plugins/cmakeprojectmanager/projecttreehelper.h3
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,