1. 有哪位知道我這個QT編譯的問題呢前兩天還好好的 今天就這樣了,軟體也重新安裝過了,應該沒有問題了。XP
明顯樓主的環境是windows,檢查一下你的路徑是不是含有漢字或者環境變數是不是沒設好,最好把錯誤貼出來,才能得進一步分析.
2. 為什麼編譯QT花那麼長時間
它本身就比較大,另外和你電腦的配置也有關系。你配置好就不用等多久。
3. 編譯qt4.8.6需要多長時間
認真核對操作步驟:
1、修改環境變數工具推薦:Rapid Environment Editor。
修改前請先備份當前的環境變數。然後:
(1)檢查系統變數path,刪除有關mingw其他版本等信息,以免與後續的mingw32-make沖突。
(2)檢查用戶變數INCLUDE、LIB、PATH、MSDevDir和MSVCDir,刪除有關\Microsoft Visual Studio\VC98的信息,因為它們會與後續的mingw32-make沖突,導致編譯出錯。
2、在電腦上安裝mingw編譯器,假設路徑安裝在C:\Qt\mingw32。將C:\Qt\mingw32\bin添加進環境變數path,打開DOS命令行輸入gcc --version和g++ --version和mingw32-make --version驗證編譯器安裝成功。我用的MinGW版本是V4.8.2,
3、解壓qt-everywhere-opensource-src-4.8.6.zip並進入目錄。例如:D:\qt-everywhere-opensource-src-4.8.6\
4、依次執行以下DOS命令:
(1)configure -debug-and-release -opensource -prefix "D:\Qt4.8.6" -platform win32-g++ -nomake demos -nomake examples
常見的使用選項說明:
-debug-and-release 編譯debug和release版
-opensource 選擇開源協議並確認
-platform win32-g++ 使用mingw編譯
-prefix "D:\Qt4.8.6" 指定編譯結果目錄,如果未指定則默認當前
-shared 創建和使用共享Qt庫
-static 創建和使用靜態Qt庫
-nomake demos -nomake examples 不編譯常式
-nomake tests 不編譯tests
-skip qtwebkit 忽略qtwebkit,因為編譯它特別消耗時間
-mp 使用多核優化編譯
(2)mingw32-make
(3)mingw32-make install
5、編譯完成後,把C:\Qt\mingw32\bin\路徑下的三個文件libgcc_s_dw2-1.dll、libstdc++-6.dll和libwinpthread-1.dll拷貝到D:\qt-everywhere-opensource-src-4.8.6\bin\。另外,也請把步驟1備份的環境變數還原。
6、修改Qt安裝路徑
最初編譯時選擇的路徑是D:\Qt4.8.6\。如果想將它復制到其他盤符,並且改名,例如:C:\Qt\4.8.6_MinGW。這樣一來會有問題嗎?是的,會有問題,因為Qt有絕對路徑依賴症。改名後C:\Qt\4.8.6_MinGW\bin\的exe執行程序都會出問題,要麼程序打不開,要麼多國語言發生異常。用記事本打開C:\Qt\4.8.6_MinGW\bin\qmake.exe,查找關鍵字「qt_prfxpath」,可以看到裡面含有原始的安裝路徑。我們不可以手動去修改qmake.exe,真正有效的解決方法是:
在C:\Qt\4.8.6_MinGW\bin\路徑下創建一個qt.conf文件,內容為
[paths]
Prefix = C:/Qt/4.8.6_MinGW
請注意:qt.conf文件必須是ANSI格式,並且Prefix的斜杠風格採取的是Linux的,而非Windows,否則會失效。或者使用"Prefix = .. ",如此一來,任意路徑有效。
4. Qt如何實現靜態編譯與動態編譯共存
通常不需要在系統變數中加入Qt庫的位置的。Qt Creator可以自動掃描到系統中存在的Qt庫版本,如果掃描不到,可以通過Creator的 Tool->Options->Qt4中添加靜態庫的路徑。而QDevelop雖然沒有那麼智能,但是可以手動指定INCLUDE和LIB的位置。或許,這根本就不是一個問題。如果懷念動態庫,或者在產品發布之前並不想體驗靜態編譯那種蝸牛爬一般的速度,可以在pro文件中指定CONFIG += shared,而且,要記得在Project中選擇相應的版本。
5. 為什麼我的qt5.4編譯以後就沒反應了,也不出現控制台程序,也沒有生成.exe文件
這是再正常不過的事了,程序執行完(簡單程序時間可忽略)就自動關閉了,想讓它停住可加<cstdlib>頭文件並在return 0;語句前加一句system("pause");如果不想看到「請按任意鍵繼續」可換為
system("pause>nul");
另外一種做法:(不需加其他頭文件,但要<iostream>頭文件)在return 0;前加cin.get()(這句話的作用是讀取一個字元,包括換行符),這時隨便按一個鍵就會退出程序。
你如果是想學習C++語法,在DEV-C++里編譯運行就可以了,沒有必要自己去打開exe文件。
6. 為什麼 Qt Creator 的編譯如此之慢
C++ 的編譯很慢,與其他語言完全不在一個數量級。任何 C++ 項目都比其他語言的編譯慢,一方面是 C++ 語言本身復雜,另外一方面是 C++ 頭文件太大,很多庫是直接在頭文件裡面實現的,所以每次需要編譯的代碼量很大。這個跟 C# 沒有可比性。
MFC 使用預編譯頭文件來緩解這個問題,在 VC 裡面集成了預編譯好的 MFC 頭文件,因而編譯速度過得去。
Qt Creator 使用 mingw-gcc 編譯,沒有預編譯頭文件的機制,對每個源代碼都需要編譯 Qt 的頭文件,所以完全編譯會是慢的。