加快QT工程編譯速度(還可給Qt for Android設置)
一、多核編譯
環境: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。
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設置)