MCPcopy Create free account
hub / github.com/KDE/kdevelop / start

Method start

plugins/qmakemanager/qmakejob.cpp:60–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58}
59
60void QMakeJob::start()
61{
62 static const char* const BUILD_TYPES[] = { "debug", "build", "(don't specify)" };
63
64 m_model = new OutputModel;
65 setModel(m_model);
66
67 startOutput();
68
69 QStringList args;
70 if (m_buildType < 2)
71 args << QLatin1String("CONFIG+=") + QLatin1String(BUILD_TYPES[m_buildType]);
72 if (!m_installPrefix.isEmpty())
73 args << QLatin1String("target.path=") + m_installPrefix;
74 if (!m_extraArguments.isEmpty()) {
75 KShell::Errors err;
76 QStringList tmp = KShell::splitArgs(m_extraArguments, KShell::TildeExpand | KShell::AbortOnMeta, &err);
77 if (err == KShell::NoError) {
78 args += tmp;
79 } else {
80 qCWarning(KDEV_QMAKE) << "Ignoring qmake Extra arguments";
81 if (err == KShell::BadQuoting) {
82 qCWarning(KDEV_QMAKE) << "QMake arguments badly quoted:" << m_extraArguments;
83 } else {
84 qCWarning(KDEV_QMAKE) << "QMake arguments had meta character:" << m_extraArguments;
85 }
86 }
87 }
88 args << QStringLiteral("-r") << m_srcDir;
89
90 m_model->appendLine(m_buildDir + QLatin1String(": ") + args.join(QLatin1Char(' ')));
91
92 QDir build(m_buildDir);
93 if (!build.exists()) {
94 build.mkpath(build.absolutePath());
95 }
96
97 m_process = new QProcess(this);
98 m_process->setWorkingDirectory(m_buildDir);
99 m_process->setProgram(m_qmakePath);
100 m_process->setArguments(args);
101 m_process->setProcessChannelMode(QProcess::MergedChannels);
102 auto lineMaker = new KDevelop::ProcessLineMaker(m_process, this);
103
104 connect(lineMaker, &ProcessLineMaker::receivedStdoutLines, m_model, &OutputModel::appendLines);
105 connect(lineMaker, &ProcessLineMaker::receivedStderrLines, m_model, &OutputModel::appendLines);
106 connect(m_process, &QProcess::errorOccurred, this, &QMakeJob::processError);
107 connect(m_process, &QProcess::finished, this, &QMakeJob::processFinished);
108
109 m_process->start();
110}
111
112bool QMakeJob::doKill()
113{

Callers

nothing calls this directly

Calls 6

joinMethod · 0.80
existsMethod · 0.80
isEmptyMethod · 0.45
appendLineMethod · 0.45
setWorkingDirectoryMethod · 0.45
setArgumentsMethod · 0.45

Tested by

no test coverage detected