![](/img/trans.png)
[英]How to use Makefile variables as files to include in g++ command?
[英]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.