Я пытаюсь узнать, как работает QProcess, и имею такой код:
#include <iostream>
using std::cout;
using std::endl;
#include <string>
using std::string;
#include <QtCore/QCoreApplication>
#include <QStringList>
#include <QString>
#include <QProcess>
#include <QIODevice>
#define LINE cout << "\n=====================================\n" << endl;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
LINE;
cout << "\nstarting process ..." << endl;
QObject *parent;
QString program = "make";
QStringList arguments;
arguments << "all";
QProcess *process = new QProcess();
QString outputFile = "H:\\processOutput.txt";
process->setStandardOutputFile( outputFile, QIODevice::Append);
process->setWorkingDirectory( "H:\\sample");
process->start(program, arguments );
cout << "\ndone..." << endl;
LINE;
return a.exec();
} // end main
Процесс "program" должен быть запущен в папке "H: \ sample", в которой есть два файла: main.cpp и Makefile.
Я ожидаю, что make будет вызываться с аргументом all. Изучая выходные данные процесса (в файле "H: \ processOutput.txt"), я вижу только текст "main", а компиляция не выводится.
Запуск "make all" на cmd работает и дает обычные результаты, main.exe. Весь код кажется выполненным до конца, потому что я вижу строку "готово ...".
Чего мне не хватает?