diff options
author | Christian Kandeler <[email protected]> | 2025-03-12 13:36:52 +0100 |
---|---|---|
committer | Christian Kandeler <[email protected]> | 2025-03-12 13:53:53 +0000 |
commit | 381f72ab16760757ce164420fd272ccec9ce916d (patch) | |
tree | 5d05766d8da14e67f426da3818f9aab058b91b80 | |
parent | 767055def52da17d2ac565d106de041a04654e26 (diff) |
ProjectExplorer: Make build system name available in Project
There is a one-to-one correspondence between the types of Project and
BuildSystem, so we shouldn't need access to a BuildSystem object to get
at the build system name.
Change-Id: Ic09c58e42e609d5db8cbf9f85bbe87d1ec3221c2
Reviewed-by: hjk <[email protected]>
27 files changed, 38 insertions, 43 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp index 07c7025acdc..e77b172a983 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp @@ -41,7 +41,6 @@ public: private: void triggerParsing() final; - QString name() const final { return QLatin1String("autotools"); } /** * Is invoked when the makefile parsing by m_makefileParserThread has @@ -262,7 +261,7 @@ public: setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setDisplayName(projectDirectory().fileName()); setHasMakeInstallEquivalent(true); - setBuildSystemCreator<AutotoolsBuildSystem>(); + setBuildSystemCreator<AutotoolsBuildSystem>("autotools"); } }; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index b420b8de7cf..727ac43c01f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -67,7 +67,6 @@ public: void buildNamedTarget(const QString &target) final; Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &sourceFile) const final; - QString name() const final { return QLatin1String("cmake"); } // Actions: void runCMake(); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 5f9b2d4a08e..6a7fa4ed114 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -55,7 +55,7 @@ CMakeProject::CMakeProject(const FilePath &fileName) setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setDisplayName(projectDirectory().fileName()); setCanBuildProducts(); - setBuildSystemCreator<CMakeBuildSystem>(); + setBuildSystemCreator<CMakeBuildSystem>("cmake"); // This only influences whether 'Install into temporary host directory' // will show up by default enabled in some remote deploy configurations. diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index c700ad7a5a6..49caf5f42e3 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -311,7 +311,6 @@ public: ~CompilationDatabaseBuildSystem(); void triggerParsing() final; - QString name() const final { return QLatin1String("compilationdb"); } void reparseProject(); void updateDeploymentData(); @@ -419,7 +418,7 @@ CompilationDatabaseProject::CompilationDatabaseProject(const FilePath &projectFi setId(Constants::COMPILATIONDATABASEPROJECT_ID); setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setDisplayName(projectDirectory().fileName()); - setBuildSystemCreator<CompilationDatabaseBuildSystem>(); + setBuildSystemCreator<CompilationDatabaseBuildSystem>("compilationdb"); setExtraProjectFiles( {projectFile.stringAppended(Constants::COMPILATIONDATABASEPROJECT_FILES_SUFFIX)}); } diff --git a/src/plugins/cppeditor/modelmanagertesthelper.cpp b/src/plugins/cppeditor/modelmanagertesthelper.cpp index 337781fa080..56f4866f82d 100644 --- a/src/plugins/cppeditor/modelmanagertesthelper.cpp +++ b/src/plugins/cppeditor/modelmanagertesthelper.cpp @@ -19,12 +19,6 @@ using namespace Utils; namespace CppEditor::Tests { -class TestBuildSystem : public ProjectExplorer::BuildSystem -{ - QString name() const override { return "ModelManagerTest"; } - void triggerParsing() override {} -}; - TestProject::TestProject(const QString &name, QObject *parent, const FilePath &filePath) : ProjectExplorer::Project("x-binary/foo", filePath), m_name(name) diff --git a/src/plugins/cppeditor/projectinfo_test.cpp b/src/plugins/cppeditor/projectinfo_test.cpp index a495659263d..342d8fad96d 100644 --- a/src/plugins/cppeditor/projectinfo_test.cpp +++ b/src/plugins/cppeditor/projectinfo_test.cpp @@ -26,7 +26,6 @@ class TestBuildSystem : public BuildSystem public: using BuildSystem::BuildSystem; private: - QString name() const override { return "ProjectPartTest"; } void triggerParsing() override {} }; class TestProject : public Project @@ -34,7 +33,7 @@ class TestProject : public Project public: TestProject(const Utils::FilePath &projectFilePath) : Project({}, projectFilePath) { - setBuildSystemCreator<TestBuildSystem>(); + setBuildSystemCreator<TestBuildSystem>("ProjectPartTest"); } }; diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index c5f91b764d6..4ae495a58fc 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -91,7 +91,6 @@ public: const Utils::FilePairs &filesToRename, Utils::FilePaths *notRenamed) final; bool addFiles(Node *, const FilePaths &filePaths, FilePaths *) final; - QString name() const final { return QLatin1String("generic"); } FilePath filesFilePath() const { return ::FilePath::fromString(m_filesFileName); } @@ -210,7 +209,7 @@ public: setId(Constants::GENERICPROJECT_ID); setProjectLanguages(Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setDisplayName(filePath.completeBaseName()); - setBuildSystemCreator<GenericBuildSystem>(); + setBuildSystemCreator<GenericBuildSystem>("generic"); } void editFilesTriggered(); diff --git a/src/plugins/mesonprojectmanager/mesonbuildsystem.h b/src/plugins/mesonprojectmanager/mesonbuildsystem.h index eb7bc0e33e7..4f749b491a3 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildsystem.h +++ b/src/plugins/mesonprojectmanager/mesonbuildsystem.h @@ -24,7 +24,6 @@ public: ~MesonBuildSystem() final; void triggerParsing() final; - QString name() const final { return QLatin1String("meson"); } inline const BuildOptionsList &buildOptions() const { return m_parser.buildOptions(); } inline const TargetsList &targets() const { return m_parser.targets(); } diff --git a/src/plugins/mesonprojectmanager/mesonproject.cpp b/src/plugins/mesonprojectmanager/mesonproject.cpp index 4fe4690d629..66533c096d3 100644 --- a/src/plugins/mesonprojectmanager/mesonproject.cpp +++ b/src/plugins/mesonprojectmanager/mesonproject.cpp @@ -31,7 +31,7 @@ public: setDisplayName(projectDirectory().fileName()); setCanBuildProducts(); setHasMakeInstallEquivalent(true); - setBuildSystemCreator<MesonBuildSystem>(); + setBuildSystemCreator<MesonBuildSystem>("meson"); } ProjectImporter *projectImporter() const final diff --git a/src/plugins/nim/project/nimbleproject.cpp b/src/plugins/nim/project/nimbleproject.cpp index 6cb71bc9ec3..3407d4a15e9 100644 --- a/src/plugins/nim/project/nimbleproject.cpp +++ b/src/plugins/nim/project/nimbleproject.cpp @@ -342,7 +342,7 @@ NimbleProject::NimbleProject(const FilePath &fileName) setDisplayName(fileName.completeBaseName()); // ensure debugging is enabled (Nim plugin translates nim code to C code) setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); - setBuildSystemCreator<NimbleBuildSystem>(); + setBuildSystemCreator<NimbleBuildSystem>("nimble"); } void NimbleProject::toMap(Store &map) const diff --git a/src/plugins/nim/project/nimbleproject.h b/src/plugins/nim/project/nimbleproject.h index 4a61306235c..b6be3f2efbd 100644 --- a/src/plugins/nim/project/nimbleproject.h +++ b/src/plugins/nim/project/nimbleproject.h @@ -51,7 +51,7 @@ private: ProjectExplorer::Node *, const Utils::FilePairs &filesToRename, Utils::FilePaths *notRenamed) override; - QString name() const final { return QLatin1String("mimble"); } + void triggerParsing() final; std::vector<NimbleTask> m_tasks; diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp index 0659d5faf28..54fc7ace2d7 100644 --- a/src/plugins/nim/project/nimproject.cpp +++ b/src/plugins/nim/project/nimproject.cpp @@ -159,8 +159,6 @@ public: Node *, const Utils::FilePairs &filesToRename, Utils::FilePaths *notRenamed) final; - QString name() const final { return QLatin1String("nim"); } - void triggerParsing() final; protected: @@ -354,7 +352,7 @@ NimProject::NimProject(const FilePath &filePath) : Project(Constants::C_NIM_MIME setDisplayName(filePath.completeBaseName()); // ensure debugging is enabled (Nim plugin translates nim code to C code) setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); - setBuildSystemCreator<NimBuildSystem>(); + setBuildSystemCreator<NimBuildSystem>("nim"); } void NimProject::toMap(Store &map) const diff --git a/src/plugins/projectexplorer/buildsystem.cpp b/src/plugins/projectexplorer/buildsystem.cpp index 016f291cc90..8a4002f8e77 100644 --- a/src/plugins/projectexplorer/buildsystem.cpp +++ b/src/plugins/projectexplorer/buildsystem.cpp @@ -67,6 +67,11 @@ BuildSystem::~BuildSystem() delete d; } +QString BuildSystem::name() const +{ + return project()->buildSystemName(); +} + Project *BuildSystem::project() const { return d->m_buildConfiguration->project(); diff --git a/src/plugins/projectexplorer/buildsystem.h b/src/plugins/projectexplorer/buildsystem.h index e6be18273aa..bb1850f29fe 100644 --- a/src/plugins/projectexplorer/buildsystem.h +++ b/src/plugins/projectexplorer/buildsystem.h @@ -43,6 +43,7 @@ public: explicit BuildSystem(BuildConfiguration *bc); ~BuildSystem() override; + QString name() const; Project *project() const; Target *target() const; Kit *kit() const; @@ -78,7 +79,6 @@ public: virtual bool addDependencies(Node *context, const QStringList &dependencies); virtual bool supportsAction(Node *context, ProjectAction action, const Node *node) const; virtual void buildNamedTarget(const QString &target) { Q_UNUSED(target) } - virtual QString name() const = 0; // Owned by the build system. Use only in main thread. Can go away at any time. ExtraCompiler *extraCompilerForSource(const Utils::FilePath &source) const; diff --git a/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp index fdd5b405276..5ccef8782aa 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonprojectpage.cpp @@ -168,7 +168,7 @@ void JsonProjectPage::initUiForSubProject() info.projectId = proj->id(); info.projectDirectory = proj->rootProjectDirectory(); info.display = rootNode->displayName() + " - " + proj->projectFilePath().toUserOutput(); - info.buildSystem = (bs ? bs->name() : ""); + info.buildSystem = proj->buildSystemName(); if (contextNode && contextNode->getProject() == proj) index = counter; projectInfos.append(info); diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index e88ed8a345e..f8f2811aca6 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -188,6 +188,7 @@ public: QHash<Id, QPair<QString, std::function<void()>>> m_generators; std::function<Tasks(const Kit *)> m_issuesGenerator; + QString m_buildSystemName; QString m_displayName; MacroExpander m_macroExpander; @@ -225,6 +226,11 @@ Project::~Project() delete d; } +QString Project::buildSystemName() const +{ + return d->m_buildSystemName; +} + QString Project::displayName() const { return d->m_displayName; @@ -1013,6 +1019,11 @@ void Project::setSupportsBuilding(bool value) d->m_supportsBuilding = value; } +void Project::setBuildSystemName(const QString &name) +{ + d->m_buildSystemName = name; +} + Task Project::createTask(Task::TaskType type, const QString &description) { return Task(type, description, FilePath(), -1, Id()); @@ -1378,9 +1389,7 @@ class TestBuildSystem final : public BuildSystem { public: using BuildSystem::BuildSystem; - void triggerParsing() final {} - QString name() const final { return QLatin1String("test"); } }; class TestBuildConfigurationFactory : public BuildConfigurationFactory @@ -1406,7 +1415,7 @@ public: { setId(TEST_PROJECT_ID); setDisplayName(TEST_PROJECT_DISPLAYNAME); - setBuildSystemCreator<TestBuildSystem>(); + setBuildSystemCreator<TestBuildSystem>("test"); target = addTargetForKit(&testKit); } diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 46f6b4c1732..3f917155763 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -61,6 +61,7 @@ public: Project(const QString &mimeType, const Utils::FilePath &fileName); ~Project() override; + QString buildSystemName() const; QString displayName() const; Utils::Id id() const; @@ -244,11 +245,13 @@ protected: void setSupportsBuilding(bool value); template <typename BuildSystemImpl> - void setBuildSystemCreator() { + void setBuildSystemCreator(const QString &name) { + setBuildSystemName(name); setBuildSystemCreator([](BuildConfiguration *bc) { return new BuildSystemImpl(bc); }); } private: + void setBuildSystemName(const QString &name); void setBuildSystemCreator(const std::function<BuildSystem *(BuildConfiguration *)> &creator); void addTarget(std::unique_ptr<Target> &&target); diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index c0001352bdd..424e8dc52c9 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -917,7 +917,6 @@ class TestBuildSystem : public BuildSystem public: using BuildSystem::BuildSystem; private: - QString name() const override { return "UserFileAccessorTest"; } void triggerParsing() override {} }; @@ -927,7 +926,7 @@ public: TestProject() : Project("x-test/testproject", "/test/project") { setDisplayName("Test Project"); - setBuildSystemCreator<TestBuildSystem>(); + setBuildSystemCreator<TestBuildSystem>("UserFileAccessorTest"); } bool needsConfiguration() const final { return false; } diff --git a/src/plugins/projectexplorer/workspaceproject.cpp b/src/plugins/projectexplorer/workspaceproject.cpp index b961985defb..d82f55d2bf9 100644 --- a/src/plugins/projectexplorer/workspaceproject.cpp +++ b/src/plugins/projectexplorer/workspaceproject.cpp @@ -78,8 +78,6 @@ public: void scan(const FilePath &path); void scanNext(); - QString name() const final { return QLatin1String("Workspace"); } - private: bool isFiltered(const FilePath &path, QList<IVersionControl *> versionControls) const; @@ -601,7 +599,7 @@ public: setId(WORKSPACE_PROJECT_ID); setDisplayName(projectDirectory().fileName()); - setBuildSystemCreator<WorkspaceBuildSystem>(); + setBuildSystemCreator<WorkspaceBuildSystem>("Workspace"); connect(this, &Project::projectFileIsDirty, this, &WorkspaceProject::updateBuildConfigurations); } diff --git a/src/plugins/python/pythonbuildsystem.h b/src/plugins/python/pythonbuildsystem.h index 96bd13674bd..76874b91171 100644 --- a/src/plugins/python/pythonbuildsystem.h +++ b/src/plugins/python/pythonbuildsystem.h @@ -26,7 +26,6 @@ public: ProjectExplorer::Node *, const Utils::FilePairs &filesToRename, Utils::FilePaths *notRenamed) override; - QString name() const override { return QLatin1String("python"); } void parse(); bool save(); diff --git a/src/plugins/python/pythonproject.cpp b/src/plugins/python/pythonproject.cpp index 481033dcbf3..8c6b8b1d1ca 100644 --- a/src/plugins/python/pythonproject.cpp +++ b/src/plugins/python/pythonproject.cpp @@ -23,7 +23,7 @@ PythonProject::PythonProject(const FilePath &fileName) setId(PythonProjectId); setProjectLanguages(Context(ProjectExplorer::Constants::PYTHON_LANGUAGE_ID)); setDisplayName(fileName.completeBaseName()); - setBuildSystemCreator<PythonBuildSystem>(); + setBuildSystemCreator<PythonBuildSystem>("python"); } PythonProjectNode::PythonProjectNode(const FilePath &path) diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index aaa124263d5..33522662d7a 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -107,7 +107,7 @@ QbsProject::QbsProject(const FilePath &fileName) setProjectLanguages(Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setCanBuildProducts(); setDisplayName(fileName.completeBaseName()); - setBuildSystemCreator<QbsBuildSystem>(); + setBuildSystemCreator<QbsBuildSystem>("qbs"); } QbsProject::~QbsProject() diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index f66ac9ad1c4..30255133723 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -73,7 +73,6 @@ public: Utils::FilePaths *notRenamed) final; Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &sourceFile) const final; QVariant additionalData(Utils::Id id) const final; - QString name() const final { return QLatin1String("qbs"); } bool isProjectEditable() const; bool addFilesToProduct(const Utils::FilePaths &filePaths, diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 20a22e5db02..0daf0f2afac 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -162,7 +162,7 @@ QmakeProject::QmakeProject(const FilePath &fileName) : setDisplayName(fileName.completeBaseName()); setCanBuildProducts(); setHasMakeInstallEquivalent(true); - setBuildSystemCreator<QmakeBuildSystem>(); + setBuildSystemCreator<QmakeBuildSystem>("qmake"); } QmakeProject::~QmakeProject() diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index 608f69e03a2..1f1b08fba02 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -84,7 +84,6 @@ public: Utils::FilePaths *notRenamed) override; bool addDependencies(ProjectExplorer::Node *context, const QStringList &dependencies) override; - QString name() const final { return QLatin1String("qmake"); } void triggerParsing() final; Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &file) const final; diff --git a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h index f53d68e36fc..4d5f373dcfd 100644 --- a/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h +++ b/src/plugins/qmlprojectmanager/buildsystem/qmlbuildsystem.h @@ -41,8 +41,6 @@ public: bool updateProjectFile(); - QString name() const override { return QLatin1String("qml"); } - QmlProject *qmlProject() const; QVariant additionalData(Utils::Id id) const override; diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 50dfd6fafae..609fc5261a4 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -46,7 +46,7 @@ QmlProject::QmlProject(const Utils::FilePath &fileName) setSupportsBuilding(false); setIsEditModePreferred(!Core::ICore::isQtDesignStudio()); - setBuildSystemCreator<QmlBuildSystem>(); + setBuildSystemCreator<QmlBuildSystem>("qml"); if (Core::ICore::isQtDesignStudio()) { if (allowOnlySingleProject() && !fileName.endsWith(Constants::fakeProjectName)) { |