標籤:包含 類的設計 shang tco c++ flags and sdn href
一、多核編譯
環境:win10, Qt 5.4.1,編譯器mingw32
項目: Qt for Android
Qt Creator 在編譯android項目時不支援先行編譯,預設cpu單核編譯,工程稍大一點導致編譯過程極其緩慢,影響效率。
不過Qt Creator內建了多核編譯工具支援,只是沒有預設開啟,需要自己在項目中進行配置才會生效。
步驟如下【以本機和項目為例】:
1.查看是否已經安裝了jom工具:C:\Qt\Qt5.4.1\Tools\QtCreator\bin\jom.exe
2.項目添加參數-j 4【4是cpu的核心數,我的是i5,只有四個核心】
添加參數完畢後可以重新編譯項目試試看,編譯的時候可以開啟工作管理員,能看到所有的cpu核心都能被充分利用。
之前我的機器【cpu i5-4590/記憶體8G/機械硬碟】項目全部重編需要50多分鐘,啟用多核以後,只需要13分鐘左右。
PS.如果是編譯器用的是ms的vc++,則只需要在.pro檔案中添加 QMAKE_CXXFLAGS += /MP 即可。
二、使用先行編譯頭
“用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 <QtCore>
#include <QtGui>
這兩個檔案裡又包含了幾乎所有Qt常用類。不用擔心,即使包含了所有標頭檔也沒關係,有了PCH再多標頭檔也沒影響。
如果你還想編譯再快點,可以在 .pro裡加入下面一行
QMAKE_CXXFLAGS += /MP
指定/mp編譯選項,編譯器將使用並行編譯,同時起多個編譯進程並行編譯不同的cpp
而且QT這種引入PCH的方法比MFC的好,由於MFC的PCH選項是每個工程逐個指定的,很容易被某些人搞壞,我曾經無數次修複PCH問題,但是Qt的選項是寫在.pro裡的,寫一次就永遠不會錯。
MFC一旦弄壞了PCH,編譯也慢得令人髮指。
原文連結:http://blog.csdn.net/hsshh1988/article/details/52604196
原文連結:http://blog.csdn.net/crlyn/article/details/52005606
http://blog.csdn.net/caoshangpa/article/details/75204018
加快QT工程編譯速度(還可給Qt for Android設定)