Qt第二天——靜態版本編譯
上篇介紹了QT開發的基本知識——環境搭建,相信大家已經最qt開發有所瞭解,但是不管是msvc、mingw,都是使用qt的相關動態庫進行編譯的,因此,我們做出來的應用程式若是換到一臺沒有安裝過qt開發環境的機器上,將會提示缺少qt相關的動態庫而無法正常執行,除非你再把需要用到的庫也搬過來,但這樣顯然很麻煩,有沒有什麼辦法可以解決這個問題?今天我們就來介紹下靜態編譯qt應用程式的準備工作。
總的來說有兩部分工作要做:
第一步:利用Qt原始碼來編譯出Qt的靜態庫。
第二步:在Qt Creator中設定編譯選項。
我們先說第一步,其實這個編譯的過程一點也不復雜,大家不要先有畏懼心理,遇到問題解決問題就行了,跟寫程式碼是一樣一樣的。
-
下載原始碼,地址在這http://download.qt.io/archive/qt/5.5/5.5.1/single/
任選一個壓縮包,我選的是.zip格式的,解壓即可(路徑中不要包含空格,這是我遇到的問題,編譯的時候命令列不認識這個地址)
-
在解壓目錄下找到configure.exe所在的目錄,將該目錄(D:\qt-everywhere-opensource-src-5.5.1\qtbase)新增到環境變數的path裡面。
-
我們vs2010的編譯環境來編譯,先到解壓目錄下找到
QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi –MDd
改為
QMAKE_CFLAGS_RELEASE
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi –MTd
儲存即可。
-
用vs2010命令列工具啟動編譯。
這裡要說一下,我開始是直接開啟vs2010,在“工具”-“visual studio 命令提示”的命令列編譯的,但是一直提示我create nmake…Building qmake failed, return code 2,於是百度了,說是找不到vs的nmake編譯器,於是到vs安裝目錄下(D:\ProgramFiles(x86)\VS\VC\bin),在檔案路徑裡輸入“cmd”,在彈出的命令列視窗中執行該目錄下的vcvars32.bat指令碼,如圖所示:
接著再進入到D:\qt-everywhere-opensource-src-5.5.1\qtbase路徑下,再輸入以下命令:
configure-platform win32-msvc2010 -opengl desktop -debug-and-release -static-qt-sql-sqlite,回車鍵,這行命令是設定編譯配置,需要等兩三分鐘,之後再輸入” nmake” ,按回車鍵等待大約兩個小時的編譯過程就結束了。生成的靜態庫目錄在D:\qt-everywhere-opensource-src-5.5.1\qtbase\lib下。
第一步成功之後,我們來所說第二步,就是讓Qtcreator在生成應用程式的時候
呼叫靜態庫生成靜態的釋出程式。
-
在Qt creator中點選“工具”——“選項”,選擇“構建和執行”——“QtVersion”——“新增”,將D:\qt-everywhere-opensource-src-5.5.1\qtbase\bin\qmake.exe加進來。
-
在“構建和執行”——“編譯器”中確保有MSVC的選項就行。
-
在“構建和執行”——“構建套件”——‘’新增”
名稱:Desktop—static
Qt版本:選擇剛才在“Qt Version”中新增的靜態庫版本
編譯器:Microsoft visual C++Compiler 10.0(x86)
-
以上,在QtCreator上的設定已經完成了,我們只需要在新建專案時,在“Kit Selection”中選擇“Desktop—static”這個編譯套件即可。
到此為止,我們想要生成靜態版本的應用程式的工作已經講解完了,大家要是實施的時候遇到什麼問題就給我留言,我會盡快回復。