QT工程如何加快編譯

2021-07-15 11:48:21 字數 2103 閱讀 6108

1. 「用qt寫的程式編譯比mfc慢」的說法是錯誤的

絕對錯誤,單位**行數編譯qt遠比mfc快得多,因為qt庫的標頭檔案設計非常好,盡量都使用了前置宣告,避免了標頭檔案巢狀,幾乎所有類都使用了公有類和私有類的設計,把沒必要公開的宣告放到私有標頭檔案裡,避免了編譯時引入過多**。而mfc沒有這樣的設計。

至於大家感覺mfc快主要原因是mfc工程預設開啟了編譯預處理標頭檔案(pch),但是這是vc編譯器的特性,所有c++程式都可以用,不是mfc特有,qt也可以使用 pch

方法很簡單,在你的 .pro 檔案中加入一行

precompiled_header = stable.h
指定 stable.h這個標頭檔案作為編譯預處理檔案,mfc裡這個檔案一般叫stdafx.h

然後在 stable.h裡 包含你所用到的所有 qt 標頭檔案,如果你用了很多qt的類可以直接包含所有

比如 :

#include

#include

這兩個檔案裡又包含了幾乎所有qt常用類

不用擔心,即使包含了所有標頭檔案也沒關係,有了pch再多頭檔案也沒影響。

如果你還想編譯再快點,可以在 .pro裡加入下面一行

qmake_cxxflags += /mp
指定/mp編譯選項,編譯器將使用並行編譯,同時起多個編譯程序並行編譯不同的cpp

而且qt這種引入pch的方法比mfc的好,由於mfc的pch選項是每個工程逐個指定的,很容易被某些人搞壞,我曾經無數次修復pch問題,但是qt的選項是寫在.pro裡的,寫一次就永遠不會錯。

mfc一旦弄壞了pch,編譯也慢得令人髮指。

給個參考時間吧,yy最新版本大約 100多萬行c++**,rebuild debug和releae總共需要20多分鐘,機器是i5 四核ssd硬碟。其實對於大專案硬碟才是瓶頸,如果換機械硬碟要慢差不多70%,有個同事用10g記憶體做了個記憶體盤編譯,還能快30%。

如果你比這個慢,請檢查自己的**問題。

2. 「qt本身編譯慢」的說法是錯的

qt本身其實編譯並不慢,慢的是webkit庫和例子程式,你如果不改任何選項預設是會編譯所有的,webkit本身就是個恐龍級專案,用了太多泛型技術,編譯非常慢。另外qt裡附帶了數百個例子工程,都編譯一邊也很慢。如果僅編譯qt核心庫是很快的,比如qtcore只需要1分鐘,qtgui大約5分鐘。

送個福利(僅限windows vc++ 2008):

configure.exe -qt-libjpeg -qt-zlib -qt-libpng -qt-libjpeg -qt-gif -no-libtiff -no-libmng -nomake examples -nomake demos -no-webkit -nomake doc -no-plugin-manifests -no-exceptions -no-rtti -no-qt3support -no-openssl -no-opengl -no-********** -no-3dnow -no-native-gestures -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique -no-sql-sqlite -no-dbus -platform win32-msvc2008

這是我自己用的qt編譯前的配置命令列,把我自己用不到的都去掉了,這樣配置編譯就快很多了。

我把 webkit examples demos 等大傢伙都去掉了。如果你真的需要這些,可以安裝qt sdk裡面有編譯好的版本。

補充:qt creator只是ide,不是編譯器,編譯慢真的不關他的事,要看你具體用的編譯器是什麼。一般來說在windows下就是mingw,也就是乙個移植版本的gcc,的確是不如vc++裡的cl快的。

如果是其它平台,那麼編譯器可以換成llvm的clang,那就快很多了。

在windows下來是用vc++吧,推薦vc2008,qt和vc的ide結合非常好,我現在的專案都是用vc2008+qt的,開發效率很高,記得裝visual assist哦。

qmake -tp vc

可以用 .pro生產 .vcproj的vc工程檔案,可以用vc++開啟編譯。

加快Qt編譯

讀帖綜合而來 qt中有乙個stable.h標頭檔案中有很多的常用qt類 比如 include include 用類似mfc的預編譯處理標頭檔案機制,只需要在.pro檔案中加入一行 precompiled header stable.h注意 mfc是預設開啟預編譯處理標頭檔案 pch 就是vc的特性 ...

Qt下程式設計如何使其能夠預編譯,加快編譯速度

vs下預設開啟了編譯預處理標頭檔案 pch 而qt則不是,因此我們需要手動設定 在工程檔案.pro中新增 precompiled header stable.h 工程中新建標頭檔案stable.h 在標頭檔案中包含qt的一些庫檔案 include include include include in...

qt工程編譯和執行

1.刪掉 debug generatedfiles release win32 x64和檔案.user sln vcxproj filters 2.只保留 h cpp qrc 沒有這個檔案編譯出來的qt專案會顯示不了 ui檔案和resources目錄 3.pro檔案檔案目的是為了實現跨平台,內容都是...