vs2008編譯qt很慢
A. 為什麼 Qt Creator 的編譯如此之慢
C++ 的編譯很慢,與其他語言完全不在一個數量級。任何 C++ 項目都比其他語言的編譯慢,一方面是 C++ 語言本身復雜,另外一方面是 C++ 頭文件太大,很多庫是直接在頭文件裡面實現的,所以每次需要編譯的代碼量很大。這個跟 C# 沒有可比性。
MFC 使用預編譯頭文件來緩解這個問題,在 VC 裡面集成了預編譯好的 MFC 頭文件,因而編譯速度過得去。
Qt Creator 使用 mingw-gcc 編譯,沒有預編譯頭文件的機制,對每個源代碼都需要編譯 Qt 的頭文件,所以完全編譯會是慢的。
B. 誰了解QT編程工具啊,麻煩比較一下。
我先來拋磚引玉吧
1)內嵌VC開發的話,可以使用visual studio的各種C++功能,文本編輯/自動補全/調試等等和普通的C++開發差不多,gui界面會調用designer插件,這個vc/eclipse/kdevelop/qt creator都一樣。相對來說比較方便。但是因為visual studio不支持並行編譯(至少vs.net2008還不支持),因此編譯較慢。如果是寫了makefile,或者利用qt生成vc格式的makefile,那麼qt.gitoris.org上有一個項目叫jom,和nmake基本兼容,但是支持並行編譯,這個只能在命令行裡面用
2)eclipse,給我的感覺怎麼說呢,就不像是給C/C++程序員使用的IDE,它其實也就是用qt插件創建gui,在編譯過程中插入moc/uic/rcc處理。編譯速度要看是在windows下還是linux下,如果是wndows,eclipse使用的是mingw工具鏈,因此編譯速度很慢。linux下用的是gcc工具鏈,因此速度較快
3)kdevelop分為3.x版本的和4.x版本的,3.x版本的比較成熟,但是有些功能不太容易使用,比如一個很簡單的添加已存在的文件到項目中的操作,用kdevelop就是沒有很直觀的方式。不是很好用
4)qt creator,我覺得比kdevelop和eclipse好用,比visual studio 2008當然還是差一些。比如它的文件的編碼格式(gb2312/iso88159-1/utf-8/big5)之類的設置,有時候似乎沒有生效,我用kate或者gedit打開之後發現qt creator編碼格式轉換沒有起作用。
這些工具在gui編碼和qt特有的功能(信號/槽、屬性、moc/uic/rcc)方面基本相同,都是調用qt designer插件。在編譯速度方面,eclipse(win32) = QTCREATOR(WIN32+MINGW) < vc(nmake或IDE編譯) < VC(JOM) = qtcreator(vc編譯器) < eclipse(linux) = qtcreator(linux) = kdevelop(linux)。在文本編輯/自動補全/跳轉方面,應該說是vc > qt creator > eclipse = kdevelop
C. qt和vs2008
應該是所鏈接的某個api庫是使用2003編譯的,而Qt使用的是2008進行編譯,導致鏈接庫不一致,從而鏈接失敗了
可以試著將api庫升級成支持2008的版本
D. vs不能編譯qt
1. 下載qt的安裝包和vs2011的qt插件,大家可以到下面的地址進行下載
BBS:
官網:
本人是在BBS上找到的,官網上沒仔細去找了(英文太多)。
2. 安裝qt sdk
安裝其實很簡單了,基本上一路回車即可,主要是要注意下qt的安裝路徑最好安裝在全英文路徑而且中間沒有空格, 安裝好後,可以運行開始菜單裡面的qt demo,直觀感受下qt的強大功能!
界面非常炫酷
4. 編譯qt
qt默認使用mingw進行編譯,如果要使用vs2011開發,需要將qt重新編譯。
進
入開始菜單microsoft visual studio 2011,visual studio tools,visual studio
command prompt (2011),需要注意的是,這裡面必須是使用visual studio command prompt
(2011),不能使用cmd的dos窗口
進入qt的安裝目錄後,執行cd qt,進入qt的根目錄
運行命令 configure -platform win32-msvc2011,o(選擇opensource模式)回車,y(同意license)回車
k1988插入:
在編譯過程中,為了加快速度,可以對configure適當的加些參數,比如-fast,-no-webkit(這個貌似挺耗時的)
我
選擇的命令行:configure -platform win32-msvc2011 -fast -debug-and-release
-no-webkit -no-script -no-qt3support -nomake demos -nomake examples
-nomake tools -mp
其中:mp是多線程編譯選項。
接著就會自動配置qt的編譯環境,等配置結束後,運行nmake,回車,qt就會開始漫長的編譯過程,這段時間非常長,需要4個小時以上。
liuyu遇到的問題:(自己遇到過,當時沒記錄下來,但是記得編譯過程中遇到這些問題)
1.DefaultLocalizationStrategy.cpp
C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/INCLUDE/yvals.h(21) : war
ning C4005: 『_HAS_TR1』 : macro redefinition
command-line arguments : see previous definition of 『_HAS_TR1』
platform/DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
platform/DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected en
d of file in macro expansion
NMAKE : fatal error U1077: 『「C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/cl.EXE」』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『「C:/Program Files (x86)/Microsoft Visual Studio 10.0
/VC/BIN/nmake.exe」』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『cd』 : return code 『0x2』
Stop.
NMAKE : fatal error U1077: 『cd』 : return code 『0x2』
Stop.
解決辦法:
打開文件…/Qt4.8.5/src/3rdparty/webkit/Source/WebCore
/platform/DefaultLocalizationStrategy.cpp
找到327行刪除的引號「」
2.NMAKE:fatal error U1077. return code 0x2
產生原因:找不到代碼文件中包含的頭文件
解決辦法:cmd下進入到vs安裝路徑/VC/Bin下,執行vcvars32,此時會執行vcvas32.bat自動為vs設置環境變數 (這個也試過好幾回,沒效果,依然出現上面錯誤)試試下面的就解決了:
經分析,是環境變數設置的CURR_DIR和TARGETDIR值中含有空格導致了此問題。
通過下面的命令刪除環境變數即可。
在d:/Qt/4.8.6目錄下鍵入下面的命令即可(不是很明白)
接著繼續nmake命令 回車換行
k1988插入:(本人未找到以下文件)
請先刪除
src/3rdparty/webkit/webcore/tmp/moc/debug_shared/mocinclude.tmp
src/3rdparty/webkit/webcore/tmp/moc/release_shared/mocinclude.tmp
/src/script/tmp/moc/debug_shared/mocinclude.tmp
/src/script/tmp/moc/release_shared/mocinclude.tmp
等文件,否則編譯有可能失敗。
k1988插入:
這一步很重要,關繫到是否能用qt-vs-addin。
把d:/qt/bin下的.qmake.cache和configure.cache這兩個文件手動備份到另一個地方。
(本人未嘗試過)然後使用nmake clean進行清理掉那些中間文件(pdb,obj等文件),清理出4個g左右的空間。
nmake confclean是清理配製文件,占的空間不大,可以不執行了。這個時候再把剛備份的.qmake.cache和configure.cache拷回原處。
5.配置vs2011的qt開發環境(vs2011最好是英文版本,qt對vs2011中文版本可能支持的不好)
等qt編譯好後就可以配置vs2011的開發環境了,進入vs2011,選擇qt菜單,qt option,進入下圖界面
k1988插入:
按
步驟編譯好了,用qt助手paths加進去,不知為何ok鍵不亮, 紅字提示:qt in the given path built using
mingw 這個是qt插件的bug,得手工改注冊表 hkey_current_user/software/trolltech/versions/
下增加一個子項 qt486(需要的名稱) 子項下面增加一個數值 installdir,值就是你要配置的qt路徑
ps:如果沒有versions這個文件夾就新建一個吧!
(這里確實是個坑,僅僅修改注冊表居然沒有用,還要去qt的lib文件夾下刪掉兩個文件 –>>刪除qt的lib目錄下(我的路徑是D:/Qt/4.8.6/lib)的libqtmain.a and libqtmaind.a 兩個文件。)
點擊add,添加qt的安裝目錄,並取名字,我這里使用qt的4.8.6版本為名稱,選擇ok後即可。
6.新建或者導入qt項目
可以通過在vs2011新建一個qt項目
E. Visual Studio編譯很慢,什麼原因
第一步:你編譯10幾20次之後編譯所需時間會達到10分鍾左右,你關掉VS,並且用任務管理器關掉所有的vs進程
確保VS進程全部關掉後,重新啟動VS打開項目,再次編譯,如果時間正常則說明你的程序有死循環,程序問題,
如果時間很長,應該是VS問題,
不知道什麼問題羅/
哈哈
你開發的其它程序有這種情況嗎?
F. vs 2008 編譯速度超慢 要將近十分鍾!!
嗯,這個就是這樣,我用08 10的都慢。最後還是換回了。6.0。那才叫神速啊。。
G. Visual Studio編譯很慢,什麼原因
Visual Studio編譯很慢解決辦法:
打開vs2010的工具選項,環境>常規之下 查看」視覺體驗」配置,它默認選擇了」基於客戶端性能自動調整視覺體驗」並啟用硬體圖形加速,取消選擇這個選擇。
H. 為什麼編譯QT花那麼長時間
它本身就比較大,另外和你電腦的配置也有關系。你配置好就不用等多久。
I. VS2008編譯軟體連接速度慢,怎麼解決
第一次編譯的時候確實很慢,這個和電腦配置有關系的!
