Russian Qt Forum
Ноябрь 22, 2024, 10:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Обработка запроса make с параметрами через QProcess  (Прочитано 4630 раз)
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« : Август 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".

Заранее спасибо.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #1 : Август 25, 2016, 09:39 »

вызвать:
int errorCode =  QProcess::​execute("make", QString("CrashReportClient ShaderCompileWorker UnrealLightmass UnrealPak UE4Editor UE4Game").split(" "));
?

Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #2 : Август 25, 2016, 11:58 »

вызвать:
int errorCode =  QProcess::​execute("make", QString("CrashReportClient ShaderCompileWorker UnrealLightmass UnrealPak UE4Editor UE4Game").split(" "));
?

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

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

Сообщений: 1177


Просмотр профиля
« Ответ #3 : Август 25, 2016, 12:50 »

2 != -2 )
2 это ошибка make, он не нашел файл из параметров

Записан
SektorCT
Частый гость
***
Offline Offline

Сообщений: 229


Просмотр профиля
« Ответ #4 : Август 25, 2016, 13:06 »

2 != -2 )
2 это ошибка make, он не нашел файл из параметров



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

Похоже что я ошибся, посмотрев файл Makefile я там обнаружил что он обращается к другому скрипту еще. В общем как то не очень понятно с этой передачей параметров.
« Последнее редактирование: Август 25, 2016, 13:11 от SektorCT » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Август 25, 2016, 13:27 »

http://doc.qt.io/qt-5/qprocess.html#setWorkingDirectory
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.088 секунд. Запросов: 22.