加快QT工程編譯速度(還可給Qt for Android設定)

來源:互聯網
上載者:User

標籤:包含   類的設計   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設定)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.