繁体   English   中英

使用QProcess的G ++ makefile命令

[英]G++ makefile command with QProcess

我正在尝试使用g ++编译器生成.exe文件。 我尝试了多种方法而没有成功。

1) QString program = "C:/Strawberry/c/bin/g++";
QStringList arguments;
arguments << "g++ -o dialog C:/Documents/ED30/dialog.cpp";
QProcess process;
process.start(program, arguments);
process.waitForFinished(-1);

2) QProcess::execute("g++ -o dialog2 C:/Documents/ED30/dialog.cpp");

3) QProcess::execute("g++ C:/Documents/ED30/dialog.cpp -o dialog2"); 

每当我有相同的错误消息:

“在C:/Documents/ED30/dialog.cpp:1:0中包含的文件中:C:/Documents/ED30/dialog.h:4:19:致命错误:QDialog:没有这样的文件或目录编译终止。”

或有时什么也没有发生。

我在Windows 8.1上将Qt 5.7与MinGW一起使用

编辑:因此,在与成员讨论了该问题之后,我取得了一些进展。 到目前为止最好的代码是:

system("g++ -o dialog2 -I C:/Qt/5.8/mingw53_32/include -I C:/Qt/5.8/mingw53_32/include/QtGui -I C:/Qt/5.8/mingw53_32/include/QtCore -I C:/Qt/5.8/mingw53_32/include/QtWidgets -L C:/Qt/5.8/mingw53_32/lib C:/Documents/ED30/dialog.cpp");

但这表明我MinGW不是c ++ 11编译器,建议我在命令行中写“ -std = c ++ 11或-std = gnu ++ 11”以更新编译器。 在编译器中键入它后,将出现以下错误:“未知命令”。 我尝试使用Qt 5.7和5.8失败。 解决方案的家伙?

似乎您尝试编译dialog.cpp的代码使用了Qt(特别是QDialog)。

当您运行g++ -o dialog2 C:/Documents/ED30/dialog.cpp ,g ++会失败,因为它找不到Qt标头和库文件所在的位置。

使它起作用的最小命令行为:

g++ -o dialog2 -I<PathToQtheaders> -L<PathToQtLibraries> -lQt5Core -lQt5Gui -lQt5Widgets C:/Documents/ED30/dialog.cpp

您可能需要根据代码需求添加一些额外的库。 请注意,如果只是像这样编译它(不调用moc等),则不能使用Q_OBJECT宏。

提示:查看标准Qt项目上qmake生成的命令。

额外提示:您可以使用QLibraryInfo::location()获取Qt安装路径。

同样,您的第一个示例应该是:

QString program = "C:/Strawberry/c/bin/g++";
QStringList arguments;
arguments << "-o" << "dialog" << "C:/Documents/ED30/dialog.cpp";
QProcess process = "g++";
process.start(program, arguments);
process.waitForFinished(-1);

我认为您缺少Qt标头的包含目录。

QProcess :: execute(“ g ++ -o对话框-IC:\\ QtDir C:/Documents/ED30/dialog.cpp”);

QtDir是系统上Qt标头的实际位置,例如C:\\ Qt \\ include

您可能也无法连接。 整个命令是:

QProcess :: execute(“ g ++ -o对话框-IC:\\ QtDir \\ include -LC:\\ Qtdir \\ lib -l Qt C:/Documents/ED30/dialog.cpp”)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM