2017年8月19日 星期六

[QT] build static QT

前陣子想要release程式又不想要額外附那麼多.dll檔,上網查了一下需要使用static build(靜態編譯)才可以,網路上直接下載的都是dynamic-build 的QT


這就去查了static linking 和 dynamic linking 的差別。


static linking 不會再compile階段加入library,而是在execute階段載入相關 .dll 檔,也比較省空間
(我覺得這很像function的概念,把常用的code存起來就不用一直重複)
dynamic linking 會在compile階段加入library,相對的compile會花費比較多時間,execute時不需要額外的.dll檔,而且檔案較大

因此我在電腦上裝了static 和 dynamic的QT,debug的時候用dynamic(比較快),要release再換static(就不需要再裝額外的.dll檔,簡潔XD)


---------------------------------------
再來就是在電腦上build一個static的QT了,找了很多文章,做了很多嘗試都弄不起來QQ
最後找到這個文章

怕以後連結失效,在這裡做個備份XD

1.先從官網下載source code(不能下載pre-compiled的!!!),如果是用online installer的話勾選版本裡面的source code 安裝就好了(記得是選MSVC的!)
2.解壓縮後找到檔案.....\qt-everywhere-opensource-src-5.7.0\qtbase\mkspecs\common\msvc-desktop.conf 
3. 把裡面的值從這樣
QMAKE_CFLAGS_RELEASE = -O2 -MD                                           QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi QMAKE_CFLAGS_DEBUG = -Zi -MDd                                               
     改成這樣
QMAKE_CFLAGS_RELEASE = -O2 -MT                                           QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi QMAKE_CFLAGS_DEBUG = -Zi -MTd                                               
4.電腦要記得安裝microsoft visual studio(msvc),打開Developer Command Prompt for MSVC XXXX(那時候還找不到QQ),進入qt資料夾
5.接下來要先configure,產生Makefile。指令可以自己研究一下,不過有些是必要的(標紅色的那些)
configure -static -debug-and-release -prefix “C:\Qt\Static\5.7.0” -platform win32-msvc2015 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -qt-sql-odbc -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests
6.再來就開始make囉!(可以加 -jN,N是CPU的核心數,可以加快)
 nmake
7.make 完就可以install啦

nmake install
這樣就大功告成了 !
原文章網址: http://amin-ahmadi.com/2016/09/22/how-to-build-qt-5-7-statically-using-msvc14-microsoft-visual-studio-2015/

沒有留言:

張貼留言