forked from qt-creator/qt-creator
Meson: Use new setup schema for MesonProject
Change-Id: If5d60fe9e6d1afe16585c345ddc026af69560d1d Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -4,56 +4,70 @@
|
||||
#include "mesonproject.h"
|
||||
|
||||
#include "mesonpluginconstants.h"
|
||||
#include "mesonprojectimporter.h"
|
||||
#include "mesonprojectmanagertr.h"
|
||||
#include "toolkitaspectwidget.h"
|
||||
|
||||
#include <coreplugin/icontext.h>
|
||||
|
||||
#include <projectexplorer/kitaspects.h>
|
||||
#include <projectexplorer/project.h>
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
#include <projectexplorer/target.h>
|
||||
#include <projectexplorer/projectmanager.h>
|
||||
|
||||
using namespace ProjectExplorer;
|
||||
|
||||
namespace MesonProjectManager::Internal {
|
||||
|
||||
MesonProject::MesonProject(const Utils::FilePath &path)
|
||||
: Project{Constants::Project::MIMETYPE, path}
|
||||
class MesonProject final : public Project
|
||||
{
|
||||
setId(Constants::Project::ID);
|
||||
setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID));
|
||||
setDisplayName(projectDirectory().fileName());
|
||||
setCanBuildProducts();
|
||||
setHasMakeInstallEquivalent(true);
|
||||
}
|
||||
public:
|
||||
explicit MesonProject(const Utils::FilePath &path)
|
||||
: Project{Constants::Project::MIMETYPE, path}
|
||||
{
|
||||
setId(Constants::Project::ID);
|
||||
setProjectLanguages(Core::Context(ProjectExplorer::Constants::CXX_LANGUAGE_ID));
|
||||
setDisplayName(projectDirectory().fileName());
|
||||
setCanBuildProducts();
|
||||
setHasMakeInstallEquivalent(true);
|
||||
}
|
||||
|
||||
Tasks MesonProject::projectIssues(const Kit *k) const
|
||||
Tasks projectIssues(const Kit *k) const final
|
||||
{
|
||||
Tasks result = Project::projectIssues(k);
|
||||
|
||||
if (!MesonToolKitAspect::isValid(k))
|
||||
result.append(
|
||||
createProjectTask(Task::TaskType::Error, Tr::tr("No Meson tool set.")));
|
||||
if (!NinjaToolKitAspect::isValid(k))
|
||||
result.append(
|
||||
createProjectTask(Task::TaskType::Error, Tr::tr("No Ninja tool set.")));
|
||||
if (ToolchainKitAspect::toolChains(k).isEmpty())
|
||||
result.append(createProjectTask(Task::TaskType::Warning,
|
||||
Tr::tr("No compilers set in kit.")));
|
||||
return result;
|
||||
}
|
||||
|
||||
ProjectImporter *projectImporter() const final
|
||||
{
|
||||
if (m_projectImporter)
|
||||
m_projectImporter = std::make_unique<MesonProjectImporter>(projectFilePath());
|
||||
return m_projectImporter.get();
|
||||
}
|
||||
|
||||
private:
|
||||
DeploymentKnowledge deploymentKnowledge() const final
|
||||
{
|
||||
// TODO in next releases
|
||||
return DeploymentKnowledge::Bad;
|
||||
}
|
||||
|
||||
mutable std::unique_ptr<MesonProjectImporter> m_projectImporter;
|
||||
};
|
||||
|
||||
void setupMesonProject()
|
||||
{
|
||||
Tasks result = Project::projectIssues(k);
|
||||
|
||||
if (!MesonToolKitAspect::isValid(k))
|
||||
result.append(
|
||||
createProjectTask(Task::TaskType::Error, Tr::tr("No Meson tool set.")));
|
||||
if (!NinjaToolKitAspect::isValid(k))
|
||||
result.append(
|
||||
createProjectTask(Task::TaskType::Error, Tr::tr("No Ninja tool set.")));
|
||||
if (ToolchainKitAspect::toolChains(k).isEmpty())
|
||||
result.append(createProjectTask(Task::TaskType::Warning,
|
||||
Tr::tr("No compilers set in kit.")));
|
||||
return result;
|
||||
}
|
||||
|
||||
ProjectImporter *MesonProject::projectImporter() const
|
||||
{
|
||||
if (m_projectImporter)
|
||||
m_projectImporter = std::make_unique<MesonProjectImporter>(projectFilePath());
|
||||
return m_projectImporter.get();
|
||||
}
|
||||
|
||||
DeploymentKnowledge MesonProject::deploymentKnowledge() const
|
||||
{
|
||||
// TODO in next releases
|
||||
return DeploymentKnowledge::Bad;
|
||||
ProjectManager::registerProjectType<MesonProject>(Constants::Project::MIMETYPE);
|
||||
}
|
||||
|
||||
} // namespace MesonProjectManager::Internal
|
||||
|
@@ -3,28 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "mesonprojectimporter.h"
|
||||
|
||||
#include <projectexplorer/project.h>
|
||||
#include <projectexplorer/projectimporter.h>
|
||||
#include <projectexplorer/task.h>
|
||||
|
||||
namespace MesonProjectManager::Internal {
|
||||
|
||||
class MesonProject final : public ProjectExplorer::Project
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit MesonProject(const Utils::FilePath &path);
|
||||
~MesonProject() final = default;
|
||||
|
||||
ProjectExplorer::Tasks projectIssues(const ProjectExplorer::Kit *k) const final;
|
||||
ProjectExplorer::ProjectImporter *projectImporter() const final;
|
||||
|
||||
private:
|
||||
ProjectExplorer::DeploymentKnowledge deploymentKnowledge() const override;
|
||||
|
||||
mutable std::unique_ptr<MesonProjectImporter> m_projectImporter;
|
||||
};
|
||||
void setupMesonProject();
|
||||
|
||||
} // namespace MesonProjectManager::Internal
|
||||
|
@@ -13,8 +13,6 @@
|
||||
|
||||
#include <extensionsystem/iplugin.h>
|
||||
|
||||
#include <projectexplorer/projectmanager.h>
|
||||
|
||||
#include <utils/fsengine/fileiconprovider.h>
|
||||
|
||||
using namespace ProjectExplorer;
|
||||
@@ -39,9 +37,9 @@ class MesonProjectPlugin final : public ExtensionSystem::IPlugin
|
||||
setupMesonRunConfiguration();
|
||||
setupMesonRunAndDebugWorkers();
|
||||
|
||||
setupMesonActions(this);
|
||||
setupMesonProject();
|
||||
|
||||
ProjectManager::registerProjectType<MesonProject>(Constants::Project::MIMETYPE);
|
||||
setupMesonActions(this);
|
||||
|
||||
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson.build");
|
||||
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson_options.txt");
|
||||
|
Reference in New Issue
Block a user