1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
/*
SPDX-FileCopyrightText: 2010 Andreas Pakulat <apaku@gmx.de>
SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-or-later
*/
#ifndef CUSTOMBUILDSYSTEMPLUGIN_H
#define CUSTOMBUILDSYSTEMPLUGIN_H
#include <interfaces/iplugin.h>
#include <project/interfaces/ibuildsystemmanager.h>
#include <project/interfaces/iprojectbuilder.h>
#include <project/abstractfilemanagerplugin.h>
class KConfigGroup;
class KDialogBase;
namespace KDevelop
{
class ProjectBaseItem;
class IProject;
}
class CustomBuildSystem : public KDevelop::AbstractFileManagerPlugin, public KDevelop::IProjectBuilder, public KDevelop::IBuildSystemManager
{
Q_OBJECT
Q_INTERFACES( KDevelop::IProjectBuilder )
Q_INTERFACES( KDevelop::IProjectFileManager )
Q_INTERFACES( KDevelop::IBuildSystemManager )
public:
explicit CustomBuildSystem(QObject* parent, const KPluginMetaData& metaData,
const QVariantList& args = QVariantList());
~CustomBuildSystem() override;
// ProjectBuilder API
KJob* build( KDevelop::ProjectBaseItem* dom ) override;
KJob* clean( KDevelop::ProjectBaseItem* dom ) override;
KJob* prune( KDevelop::IProject* ) override;
/// @p installPrefix will be passed as DESTDIR environment variable
KJob* install( KDevelop::ProjectBaseItem* item, const QUrl &installPrefix ) override;
KJob* configure( KDevelop::IProject* ) override;
KDevelop::Path compiler(KDevelop::ProjectTargetItem * p) const override;
Q_SIGNALS:
void built( KDevelop::ProjectBaseItem *dom );
void installed( KDevelop::ProjectBaseItem* );
void cleaned( KDevelop::ProjectBaseItem* );
void failed( KDevelop::ProjectBaseItem *dom );
void configured( KDevelop::IProject* );
void pruned( KDevelop::IProject* );
// AbstractFileManagerPlugin API
public:
Features features() const override;
KDevelop::ProjectFolderItem* createFolderItem( KDevelop::IProject* project,
const KDevelop::Path& path, KDevelop::ProjectBaseItem* parent = nullptr ) override;
// BuildSystemManager API
public:
bool addFilesToTarget( const QList<KDevelop::ProjectFileItem*>& file, KDevelop::ProjectTargetItem* parent ) override;
bool hasBuildInfo( KDevelop::ProjectBaseItem* ) const override;
KDevelop::Path buildDirectory( KDevelop::ProjectBaseItem* ) const override;
IProjectBuilder* builder() const override;
KDevelop::ProjectTargetItem* createTarget( const QString& target, KDevelop::ProjectFolderItem* parent ) override;
QHash<QString, QString> defines( KDevelop::ProjectBaseItem* ) const override;
KDevelop::Path::List includeDirectories( KDevelop::ProjectBaseItem* ) const override;
KDevelop::Path::List frameworkDirectories( KDevelop::ProjectBaseItem* ) const override;
QString extraArguments(KDevelop::ProjectBaseItem *item) const override;
bool removeFilesFromTargets( const QList<KDevelop::ProjectFileItem*>& ) override;
bool removeTarget( KDevelop::ProjectTargetItem* target ) override;
QList<KDevelop::ProjectTargetItem*> targets( KDevelop::ProjectFolderItem* ) const override;
KConfigGroup configuration( KDevelop::IProject* ) const;
KConfigGroup findMatchingPathGroup( const KConfigGroup& cfg, KDevelop::ProjectBaseItem* item ) const;
// IPlugin API
public:
int perProjectConfigPages() const override;
KDevelop::ConfigPage* perProjectConfigPage(int number, const KDevelop::ProjectConfigOptions& options, QWidget* parent) override;
};
#endif
|