使用仅带参数的 QProcess

Using QProcess with only arguments

我正在尝试使用 QProcess 编译另一个 .cpp 代码。我在我的程序中使用了这段代码。

QStringList arguments;
arguments << "g++";
arguments << "-o";
arguments << QDir::toNativeSeparators(exePath);   //path and exe path to future .exe
arguments << QDir::toNativeSeparators(mainPath);  // path to main.cpp

QProcess process;
process.open();

process.setArguments(arguments);

process.start();
process.waitForFinished();

process.close();

它工作正常,它编译另一个 .cpp 文件并为该测试项目创建 .exe。 但我也收到警告:

QProcess::start: 程序未设置

但我不想设置程序...一开始我使用 std::system() 为此,但我想使用 Qt 库。

你知道如何超越警告吗?

再说一次:这是一个从完全不同的程序编译完全不同的程序main.cpp。

I dont want to set program

据我所知,你想使用 g++ 而那个程序就是

所以

QStringList arguments;

arguments << "-o";
arguments << QDir::toNativeSeparators(exePath);   //path and exe path to future .exe
arguments << QDir::toNativeSeparators(mainPath);  // path to main.cpp

QProcess process;

process.start("g++", arguments);
process.waitForFinished();

QStringList arguments;

arguments << "-o";
arguments << QDir::toNativeSeparators(exePath);   //path and exe path to future .exe
arguments << QDir::toNativeSeparators(mainPath);  // path to main.cpp

QProcess process;

process.setProgram("g++");
process.setArguments(arguments);
process.start();
process.waitForFinished();

Do you know how to surpass warning ?

使用setProgram()函数:

QProcess p;
//set the program
p.setProgram("g++");

//create args
QStringList arguments = {
  "-o",
  QDir::toNativeSeparators(exePath),
  QDir::toNativeSeparators(mainPath) 
};

//set the args
p.setArguments(arguments);

另外,不要同时使用 open()start()。来自 docs:

This method is an alias for start(), and exists only to fully implement the interface defined by QIODevice.

所以 process.start() 就够了。