Qt靜態編譯總結

一、什麼是qt

Qt是著名的跨平臺C++界面庫,甚至可以運行在嵌入式設備上(基於framebuffer),擁有自己的集成開發環境Qt Creator。在linux上的兩大桌面環境gnome和kde,前者是基於GTK+(主要用C開發),而後者就是基於Qt(主要用C++開發)。

二、安裝qt4.3.5和編譯動態版exe

* 安裝最新的qt開源版,但因爲現在的qt比較臃腫,所以我選擇了比較舊的4.3.5版

下載地址在:http://download.qt-project.org/archive/qt/4.3/

* mingw我選擇了舊版本的mingw:devcpp-4.9.9.2_setup.exe(因爲新版本會編譯失敗,不同版本qt可能需要用不同版本的mingw)

下載地址在:http://sourceforge.net/projects/dev-cpp/files/

如果已經安裝了最新的mingw,需要把同驅動盤根目錄下的mingw目錄改名,否則會干擾舊版本mingw導致編譯失敗。

* 安裝qt4.3.5的時候,會提示指定mingw路徑(最新版本的qt會自帶mingw,不需要這一步),我選擇了devcpp的安裝目錄,例如D:\Dev-Cpp

* qt自帶一個命令行工具叫qtvars.bat,用於設置環境變量,不過有時候有些環境變量沒有屏蔽,會導致編譯失敗,需要新建另一個bat屏蔽某些環境變量(也可以直接添加至qtvars.bat),例如:

@echo off  

@set include=  

@set lib=  

@set path=D:\Dev-Cpp\bin;C:\WINDOWS;C:\WINDOWS\system32;C:\Windows\SysWOW64

@cmd

* 啓動qtvars.bat,切換到需要編譯的工程目錄下(例如安裝目錄下demos和examples裏的示例工程),執行qmake和make clean all即可編譯動態版的可執行文件。

三、靜態編譯qt源代碼

開源版的qt在安裝的時候既安裝了必要的動態鏈接庫和頭文件,也安裝了相應的源代碼。在自帶配置好的命令行執行configure和make即可編譯靜態庫(大概需要半小時)

> configure -static -release -no-exceptions

> mingw32-make

需要注意的是默認編譯demos和examples下的工程,這些是很浪費時間的,所以在編譯之前記得修改根目錄下的projects.pro文件,把相關的幾行註釋掉

    isEqual(PROJECT, tools) {

#       !cross_compile:SUBDIRS += tools

#       else:SUBDIRS += tools/qtestlib

    } else:isEqual(PROJECT, examples) {

#       SUBDIRS += examples

    } else:isEqual(PROJECT, demos) {

#       SUBDIRS += demos

如果要編譯這些示例工程,只要用cd切換到某個目錄下重新執行qmake和make即可編譯其靜態版可執行文件。

四、靜態鏈接qt插件庫

如果用到qt的jpg圖片插件,需要靜態鏈接插件的靜態庫文件

在cpp文件中添加以下行:

#include <QtPlugin>

Q_IMPORT_PLUGIN(qjpeg) 

在pro文件中添加以下行(需要修改爲實際路徑):

LIBS += D:/Qt/4.3.5/plugins/p_w_picpathformats/libqjpeg.a 

其他qt插件的做法類似。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章