簡體   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