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
プロセス「プログラム」は、main.cppとMakefileの2つのファイルがあるフォルダ「H:\sample」で実行する必要があります。
私の期待は、「make」が「all」引数で呼び出されることです。プロセスの出力(ファイル "H:\ processOutput.txt")を調べると、テキスト "main"のみが表示され、コンパイルの出力はありません。
cmdで「makeall」を実行すると動作し、通常の結果、main.exeが生成されます。「done...」という行が表示されるため、コード全体が最後まで実行されているように見えます。私は何が欠けていますか?