[英]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.