Files
qt-creator/src/plugins/cmakeprojectmanager/projecttreehelper.h
Cristian Adam 973e9dcf90 CMakePM: Treat all sourceGroups as sourcesOrHeaders project nodes
Previously only "Source Files" and "Header Files" were treated as
sourceOrHeaders project nodes.

But source_group can introduce a new source group which needs to be also
treated as sourcesOrHeaders project node.

Fixes: QTCREATORBUG-29799
Change-Id: I833d80155fba3fb0269aeab149ea74b0d2edd271
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
2023-10-31 15:52:31 +00:00

52 lines
2.4 KiB
C++

// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "cmakeprojectnodes.h"
#include <utils/filepath.h>
#include <memory>
namespace CMakeProjectManager::Internal {
std::unique_ptr<ProjectExplorer::FolderNode> createCMakeVFolder(const Utils::FilePath &basePath,
int priority,
const QString &displayName,
bool sourcesOrHeaders);
void addCMakeVFolder(ProjectExplorer::FolderNode *base,
const Utils::FilePath &basePath,
int priority,
const QString &displayName,
std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&files,
bool sourcesOrHeaders = false);
std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&removeKnownNodes(
const QSet<Utils::FilePath> &knownFiles,
std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&files);
void addCMakeInputs(ProjectExplorer::FolderNode *root,
const Utils::FilePath &sourceDir,
const Utils::FilePath &buildDir,
std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&sourceInputs,
std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&buildInputs,
std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&rootInputs);
void addCMakePresets(ProjectExplorer::FolderNode *root, const Utils::FilePath &sourceDir);
QHash<Utils::FilePath, ProjectExplorer::ProjectNode *> addCMakeLists(
CMakeProjectNode *root, std::vector<std::unique_ptr<ProjectExplorer::FileNode>> &&cmakeLists);
void createProjectNode(const QHash<Utils::FilePath, ProjectExplorer::ProjectNode *> &cmakeListsNodes,
const Utils::FilePath &dir,
const QString &displayName);
CMakeTargetNode *createTargetNode(
const QHash<Utils::FilePath, ProjectExplorer::ProjectNode *> &cmakeListsNodes,
const Utils::FilePath &dir,
const QString &displayName);
void addFileSystemNodes(ProjectExplorer::ProjectNode *root,
const std::shared_ptr<ProjectExplorer::FolderNode> &folderNode);
} // CMakeProjectManager::Internal