C++ 在QT5中使用QProcess运行gcc

C++ 在QT5中使用QProcess运行gcc,c++,gcc,qt5,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/co

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

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/“'


我不知道如何正确格式化函数有几个重载。第一版

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);
QStringList args=QStringList()

您需要使用
\”
转义
字符,因此请使用
..(char*)\”https://google.fr/\“”);
而不是
…(字符*)https://google.fr/"'");
*。@pschill这解决了语法问题,但命令没有正确执行,也没有执行编译:/
QProcess::start
函数具有and重载,该重载使用一个参数作为程序名,使用一个
QStringList
作为参数。尝试使用
QStringList args=QStringList()@pschill yeaaah!!这是一个完美的命令!(创建可执行文件并添加变量host):
QStringList args=QStringList()乐意帮助:)