Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: SektorCT от Август 24, 2016, 17:51



Название: Обработка запроса make с параметрами через QProcess
Отправлено: SektorCT от Август 24, 2016, 17:51
Всем привет.
Собираю маленькую программу где требуется по нажатию на кнопку обработать запрос типа "make 1 2 3 10". Все эти параметр это бинарники. В консоли все без проблем, а вот через QT как это обработать?

Передаю вот таким путем:

Код:
void MainWindow::makeAll()
{
    QString command = QString("make CrashReportClient ShaderCompileWorker UnrealLightmass UnrealPak UE4Editor UE4Game");
    consoleWidget_->execInstall(labelPath_->text() + "/UnrealEngine/", command);
}

Так как вывод сделан с передачей вместо консоли в виджет то обработка вот такая:

Код:
void ConsoleWidget::execCommand(QString workDir, QString command)
{
    QDir::setCurrent(workDir);

    qDebug() << workDir;
    qDebug() << QDir::current();

    m_consoleWrapper.m_process.setWorkingDirectory(workDir);
    m_consoleWrapper.setStartCommand(command);
    if (!m_consoleWrapper.start())
    {
        showErrorMessage("Fall!");
        qDebug() << m_consoleWrapper.m_process.errorString();
    }
}

Буду признателен за советы или помощь. С QProcces еще очень плохо знаком, не все ясно. Но вроде как можно чере QProcess::start( QString nameOfProg, QStringList arguments);
где аргументы это бинарники которые надо скормить "make".

Заранее спасибо.


Название: Re: Обработка запроса make с параметрами через QProcess
Отправлено: qate от Август 25, 2016, 09:39
вызвать:
int errorCode =  QProcess::​execute("make", QString("CrashReportClient ShaderCompileWorker UnrealLightmass UnrealPak UE4Editor UE4Game").split(" "));
?



Название: Re: Обработка запроса make с параметрами через QProcess
Отправлено: SektorCT от Август 25, 2016, 11:58
вызвать:
int errorCode =  QProcess::​execute("make", QString("CrashReportClient ShaderCompileWorker UnrealLightmass UnrealPak UE4Editor UE4Game").split(" "));
?

Попробовал вызвать этот метод. Получаю такой результат:
Код:
make: *** пустая строка недопустима в качестве имени файла.  Останов.
2

Из описания я понял что он возвращает 2 если процесс небыл запущен.
Вот только вопрос почему.


Название: Re: Обработка запроса make с параметрами через QProcess
Отправлено: qate от Август 25, 2016, 12:50
2 != -2 )
2 это ошибка make, он не нашел файл из параметров



Название: Re: Обработка запроса make с параметрами через QProcess
Отправлено: SektorCT от Август 25, 2016, 13:06
2 != -2 )
2 это ошибка make, он не нашел файл из параметров



Посмотрел по каталогам, как понимаю эти параметры что передаются "make" это бинарники вроде как которые распологаются в другом месте нежели Makefile.
Могли бы помочь с этим, как правильно тогда тут с передачей параметров поступать?

Похоже что я ошибся, посмотрев файл Makefile я там обнаружил что он обращается к другому скрипту еще. В общем как то не очень понятно с этой передачей параметров.


Название: Re: Обработка запроса make с параметрами через QProcess
Отправлено: __Heaven__ от Август 25, 2016, 13:27
http://doc.qt.io/qt-5/qprocess.html#setWorkingDirectory (http://doc.qt.io/qt-5/qprocess.html#setWorkingDirectory)