Запустите gcc с QProcess в QT5 - PullRequest
0 голосов
/ 20 мая 2018

Мне нужно скомпилировать исходный код из первой программы.Мне нужно запустить это:

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 голосов
/ 20 мая 2018

Функция 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...