初始化:图形化界面骨架(文件选择、语法高亮、自动缩进、查找/替换)
This commit is contained in:
51
backend/compileprocessmanager.cpp
Normal file
51
backend/compileprocessmanager.cpp
Normal file
@@ -0,0 +1,51 @@
|
||||
#include "compileprocessmanager.h"
|
||||
|
||||
#include <QProcess>
|
||||
|
||||
CompileProcessManager::CompileProcessManager(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
m_process = new QProcess(this);
|
||||
connect(m_process, &QProcess::finished,
|
||||
this, &CompileProcessManager::onProcessFinished);
|
||||
}
|
||||
|
||||
void CompileProcessManager::runCompile(const QString &sourceCode)
|
||||
{
|
||||
if (m_process->state() != QProcess::NotRunning) {
|
||||
// 简单处理:如果已经在运行,就先杀掉,或直接返回
|
||||
m_process->kill();
|
||||
m_process->waitForFinished();
|
||||
}
|
||||
|
||||
// TODO: 这里根据你的编译器协议生成指令和参数
|
||||
// 假设你已存在一个后端可执行文件 "my_compiler_backend"
|
||||
QString program = "my_compiler_backend";
|
||||
|
||||
QStringList args = buildArguments(sourceCode);
|
||||
|
||||
m_process->setProgram(program);
|
||||
m_process->setArguments(args);
|
||||
m_process->start();
|
||||
}
|
||||
|
||||
QStringList CompileProcessManager::buildArguments(const QString &sourceCode)
|
||||
{
|
||||
QStringList args;
|
||||
|
||||
// TODO: 把 sourceCode 写入临时文件 / 管道 / 特定协议
|
||||
// 这里只是示例:假设后端接受一个 -code "xxx" 的参数
|
||||
args << "-code" << sourceCode;
|
||||
|
||||
return args;
|
||||
}
|
||||
|
||||
void CompileProcessManager::onProcessFinished(int exitCode, QProcess::ExitStatus status)
|
||||
{
|
||||
Q_UNUSED(status);
|
||||
|
||||
QString stdoutText = QString::fromLocal8Bit(m_process->readAllStandardOutput());
|
||||
QString stderrText = QString::fromLocal8Bit(m_process->readAllStandardError());
|
||||
|
||||
emit compileFinished(stdoutText, stderrText, exitCode);
|
||||
}
|
||||
Reference in New Issue
Block a user