File indexing completed on 2024-04-28 04:38:19
0001 /* 0002 SPDX-FileCopyrightText: 2006-2007 Aleix Pol <aleixpol@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef CMAKEBUILDER_H 0008 #define CMAKEBUILDER_H 0009 0010 #include <interfaces/iplugin.h> 0011 #include <QList> 0012 #include <QVariantList> 0013 #include <QUrl> 0014 #include <project/interfaces/iprojectbuilder.h> 0015 0016 class QStringList; 0017 class KDialog; 0018 0019 namespace KDevelop{ 0020 class ProjectBaseItem; 0021 } 0022 0023 /** 0024 * @author Aleix Pol 0025 */ 0026 class CMakeBuilder : public KDevelop::IPlugin, public KDevelop::IProjectBuilder 0027 { 0028 Q_OBJECT 0029 Q_INTERFACES( KDevelop::IProjectBuilder ) 0030 0031 public: 0032 explicit CMakeBuilder(QObject *parent = nullptr, const QVariantList &args = QVariantList()); 0033 ~CMakeBuilder() override; 0034 0035 KJob* build(KDevelop::ProjectBaseItem *dom) override; 0036 KJob* install(KDevelop::ProjectBaseItem *dom, const QUrl &installPrefix) override; 0037 KJob* clean(KDevelop::ProjectBaseItem *dom) override; 0038 KJob* configure(KDevelop::IProject*) override; 0039 KJob* prune(KDevelop::IProject*) override; 0040 0041 QList< KDevelop::IProjectBuilder* > additionalBuilderPlugins( KDevelop::IProject* project ) const override; 0042 0043 // bool updateConfig( KDevelop::IProject* project ); 0044 0045 int configPages() const override; 0046 KDevelop::ConfigPage* configPage(int number, QWidget* parent) override; 0047 0048 Q_SIGNALS: 0049 void built(KDevelop::ProjectBaseItem*); 0050 void failed(KDevelop::ProjectBaseItem*); 0051 void installed(KDevelop::ProjectBaseItem*); 0052 void cleaned(KDevelop::ProjectBaseItem*); 0053 void configured(KDevelop::IProject*); 0054 void pruned(KDevelop::IProject*); 0055 0056 private: 0057 KJob* checkConfigureJob(KDevelop::IProject* project, bool& valid); 0058 0059 void addBuilder(const QString& neededfile, const QStringList& generator, KDevelop::IPlugin* i); 0060 KDevelop::IProjectBuilder* builderForProject(KDevelop::IProject* p) const; 0061 QMap<QString, KDevelop::IProjectBuilder*> m_builders; 0062 QMap<QString, IProjectBuilder*> m_buildersForGenerator; 0063 }; 0064 0065 #endif // CMAKEBUILDER_H 0066