ProjectManager: Simplify Project::setBuildSystemCreator()

Make it a template method.

Change-Id: I3f0510c89d7f0bfe2f814dadc4d8de01c0e1cc89
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Jarek Kobus
2024-07-15 16:34:49 +02:00
parent d4776e6401
commit cebaab596d
11 changed files with 17 additions and 14 deletions

View File

@@ -44,7 +44,7 @@ public:
setHasMakeInstallEquivalent(true); setHasMakeInstallEquivalent(true);
setBuildSystemCreator([](Target *t) { return new AutotoolsBuildSystem(t); }); setBuildSystemCreator<AutotoolsBuildSystem>();
} }
}; };

View File

@@ -413,7 +413,7 @@ CompilationDatabaseProject::CompilationDatabaseProject(const Utils::FilePath &pr
setId(Constants::COMPILATIONDATABASEPROJECT_ID); setId(Constants::COMPILATIONDATABASEPROJECT_ID);
setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID));
setDisplayName(projectDirectory().fileName()); setDisplayName(projectDirectory().fileName());
setBuildSystemCreator([](Target *t) { return new CompilationDatabaseBuildSystem(t); }); setBuildSystemCreator<CompilationDatabaseBuildSystem>();
setExtraProjectFiles( setExtraProjectFiles(
{projectFile.stringAppended(Constants::COMPILATIONDATABASEPROJECT_FILES_SUFFIX)}); {projectFile.stringAppended(Constants::COMPILATIONDATABASEPROJECT_FILES_SUFFIX)});
} }

View File

@@ -179,7 +179,7 @@ public:
setId(Constants::GENERICPROJECT_ID); setId(Constants::GENERICPROJECT_ID);
setProjectLanguages(Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setProjectLanguages(Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID));
setDisplayName(filePath.completeBaseName()); setDisplayName(filePath.completeBaseName());
setBuildSystemCreator([](Target *t) { return new GenericBuildSystem(t); }); setBuildSystemCreator<GenericBuildSystem>();
} }
void editFilesTriggered(); void editFilesTriggered();

View File

@@ -121,7 +121,7 @@ public:
{ {
setId(Constants::C_HASKELL_PROJECT_ID); setId(Constants::C_HASKELL_PROJECT_ID);
setDisplayName(fileName.toFileInfo().completeBaseName()); setDisplayName(fileName.toFileInfo().completeBaseName());
setBuildSystemCreator([](Target *t) { return new HaskellBuildSystem(t); }); setBuildSystemCreator<HaskellBuildSystem>();
} }
}; };

View File

@@ -24,7 +24,7 @@ NimbleProject::NimbleProject(const Utils::FilePath &fileName)
setDisplayName(fileName.completeBaseName()); setDisplayName(fileName.completeBaseName());
// ensure debugging is enabled (Nim plugin translates nim code to C code) // ensure debugging is enabled (Nim plugin translates nim code to C code)
setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID));
setBuildSystemCreator([] (Target *t) { return new NimbleBuildSystem(t); }); setBuildSystemCreator<NimbleBuildSystem>();
} }
void NimbleProject::toMap(Store &map) const void NimbleProject::toMap(Store &map) const

View File

@@ -46,7 +46,7 @@ NimProject::NimProject(const FilePath &filePath) : Project(Constants::C_NIM_MIME
// ensure debugging is enabled (Nim plugin translates nim code to C code) // ensure debugging is enabled (Nim plugin translates nim code to C code)
setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID));
setBuildSystemCreator([](Target *t) { return new NimBuildSystem(t); }); setBuildSystemCreator<NimBuildSystem>();
} }
Tasks NimProject::projectIssues(const Kit *k) const Tasks NimProject::projectIssues(const Kit *k) const

View File

@@ -1032,7 +1032,7 @@ Task Project::createProjectTask(Task::TaskType type, const QString &description)
return Task(type, description, FilePath(), -1, Id()); return Task(type, description, FilePath(), -1, Id());
} }
void Project::setBuildSystemCreator(const std::function<BuildSystem *(Target *)> &creator) void Project::setBuildSystemCreatorImpl(const std::function<BuildSystem *(Target *)> &creator)
{ {
d->m_buildSystemCreator = creator; d->m_buildSystemCreator = creator;
} }
@@ -1404,7 +1404,7 @@ public:
{ {
setId(TEST_PROJECT_ID); setId(TEST_PROJECT_ID);
setDisplayName(TEST_PROJECT_DISPLAYNAME); setDisplayName(TEST_PROJECT_DISPLAYNAME);
setBuildSystemCreator([](Target *t) { return new TestBuildSystem(t); }); setBuildSystemCreator<TestBuildSystem>();
setNeedsBuildConfigurations(false); setNeedsBuildConfigurations(false);
setNeedsDeployConfigurations(false); setNeedsDeployConfigurations(false);

View File

@@ -232,10 +232,13 @@ protected:
static ProjectExplorer::Task createProjectTask(ProjectExplorer::Task::TaskType type, static ProjectExplorer::Task createProjectTask(ProjectExplorer::Task::TaskType type,
const QString &description); const QString &description);
template <typename BuildSystemImpl>
void setBuildSystemCreator(const std::function<BuildSystem *(Target *)> &creator); void setBuildSystemCreator() {
setBuildSystemCreatorImpl([](Target *t) { return new BuildSystemImpl(t); });
}
private: private:
void setBuildSystemCreatorImpl(const std::function<BuildSystem *(Target *)> &creator);
void addTarget(std::unique_ptr<Target> &&target); void addTarget(std::unique_ptr<Target> &&target);
void addProjectLanguage(Utils::Id id); void addProjectLanguage(Utils::Id id);

View File

@@ -262,7 +262,7 @@ public:
setId(Id::fromString(WORKSPACE_PROJECT_ID)); setId(Id::fromString(WORKSPACE_PROJECT_ID));
setDisplayName(projectDirectory().fileName()); setDisplayName(projectDirectory().fileName());
setBuildSystemCreator([](Target *t) { return new WorkspaceBuildSystem(t); }); setBuildSystemCreator<WorkspaceBuildSystem>();
} }
FilePath projectDirectory() const override FilePath projectDirectory() const override

View File

@@ -26,7 +26,7 @@ PythonProject::PythonProject(const FilePath &fileName)
setProjectLanguages(Context(ProjectExplorer::Constants::PYTHON_LANGUAGE_ID)); setProjectLanguages(Context(ProjectExplorer::Constants::PYTHON_LANGUAGE_ID));
setDisplayName(fileName.completeBaseName()); setDisplayName(fileName.completeBaseName());
setBuildSystemCreator([](Target *t) { return new PythonBuildSystem(t); }); setBuildSystemCreator<PythonBuildSystem>();
} }
Tasks PythonProject::projectIssues(const Kit *k) const Tasks PythonProject::projectIssues(const Kit *k) const

View File

@@ -51,7 +51,7 @@ QmlProject::QmlProject(const Utils::FilePath &fileName)
setDisplayName(fileName.completeBaseName()); setDisplayName(fileName.completeBaseName());
setNeedsBuildConfigurations(false); setNeedsBuildConfigurations(false);
setBuildSystemCreator([](Target *t) { return new QmlBuildSystem(t); }); setBuildSystemCreator<QmlBuildSystem>();
if (Core::ICore::isQtDesignStudio()) { if (Core::ICore::isQtDesignStudio()) {
if (allowOnlySingleProject()) { if (allowOnlySingleProject()) {