在QT5中使用QProcess运行gcc

时间:2018-05-20 14:49:17

标签: c++ gcc qt5

我需要从第一个程序编译源代码。 我需要运行这个:

gcc -o finalOutput sources/main.cpp sources/config.h -lcurl '-DHOST=(char*)"https://google.fr/"'

我使用的是QT5,这是我测试过的:

QProcess *proc;  
proc = new QProcess();  
proc->start("gcc -o finalOutput sources/main.cpp sources/config.h -lcurl '-DHOST=(char*)"https://google.fr/"'"); // start program
ui->lblReturn->setText("ok");

问题来自gcc命令的语法,这部分:
'-DHOST=(char*)"https://google.fr/"'

QT5

我不明白如何正确格式化

1 个答案:

答案 0 :(得分:1)

QProcess::start函数有几个重载。第一个版本

QProcess::start(const QString& command, OpenMode mode=ReadWrite);

有一个奇怪的行为,其参数包含引号字符。引用文档:

  

命令字符串中的文字引号用三引号表示。

这就是我通常推荐

的原因
QProcess::start(const QString& program, const QStringList& arguments, OpenMode mode=ReadWrite);

过载。使用它,命令

gcc -o finalOutput sources/main.cpp sources/config.h -lcurl '-DHOST=(char*)"https://google.fr/"'

可以使用以下代码执行:

QStringList args = QStringList()
    << "-o"
    << "finalOutput"
    << "sources/main.cpp"
    << "sources/config.h"
    << "-lcurl"
    << "-DHOST=(char*)\"https://google.fr/\"";
QProcess *proc = new QProcess();
proc->start("gcc", args);