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()乐意帮助:)