我需要从第一个程序编译源代码。 我需要运行这个:
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
函数有几个重载。第一版
QProcess::start(const QString& command, OpenMode mode=ReadWrite);
对包含引号字符的参数有奇怪的行为。引用文档:
Literal quotes in the command string are represented by triple quotes.
这就是为什么我通常推荐
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);
关于c++ - 在 QT5 中使用 QProcess 运行 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50436030/