File indexing completed on 2024-04-28 04:39:10

0001 /*
0002     SPDX-FileCopyrightText: 2006-2007 Andreas Pakulat <apaku@gmx.de>
0003     SPDX-FileCopyrightText: 2008 Hamish Rodda <rodda@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #ifndef QMAKEJOB_H
0009 #define QMAKEJOB_H
0010 
0011 #include <outputview/outputexecutejob.h>
0012 
0013 #include <QProcess>
0014 
0015 namespace KDevelop{
0016     class CommandExecutor;
0017     class IProject;
0018 }
0019 
0020 /**
0021 @author Andreas Pakulat
0022 @author Hamish Rodda (KJob porting)
0023 */
0024 class QMakeJob : public KDevelop::OutputExecuteJob
0025 {
0026     Q_OBJECT
0027 
0028 public:
0029     explicit QMakeJob(QObject *parent = nullptr);
0030 
0031     enum ErrorTypes {
0032         NoProjectError = UserDefinedError,
0033         ConfigureError
0034     };
0035 
0036     void setProject(KDevelop::IProject* project);
0037     
0038     void start() override;
0039 
0040     QUrl workingDirectory() const override;
0041     QStringList commandLine() const override;
0042 
0043 protected:
0044     bool doKill() override;
0045 
0046 private Q_SLOTS:
0047     void slotFailed(QProcess::ProcessError);
0048     void slotCompleted(int);
0049     
0050 private:
0051     KDevelop::IProject* m_project = nullptr;
0052     KDevelop::CommandExecutor* m_cmd = nullptr;
0053     bool m_killed = false;
0054 };
0055 
0056 #endif // QMAKEJOB_H
0057