QT編譯參數說明

轉載:http://lanxinyuchs.iteye.com/blog/937596

注:本文的例子都基於qt-embedded-linux-opensource-src-4.5.x

當進入解壓好的源碼包後,使用./configure –help命令,可以獲得相應幫助

如果參數前面有*號,直接配置編譯的話,就會把這些參數默認進去。爲了便於分析,接下來,我們以如下格式進行:

參數
解釋

-release
編譯Qt以發佈版的模式進行,一般來說,最後系統完成後,庫就應該是發佈版。

-debug
與上面對應,自然是調試版了,如果開發的話,可以選擇它吧。

-developer-build
選了這個後,可以進行自動測試。

-shared
-static
這兩個參數是指Qt的lib以動態還是靜態編譯生成。

-no-fast
-fast
如果選第一個,則所有的工程文件都會生成到makefiles中,因而編譯的時間就會很長。如果選第二個,那就只加入子目錄和庫到makefiles,這樣就能加快編譯的速度。

-no-largefile
-largefile
支不支持大文件,一般來說,嵌入式裏是不會有從超過4G的大文件的。

-no-exceptions
-exceptions
選則編譯器支持拋出異常,否則不支持。

no-sql-<driver>
-qt-sql-<driver>
-plugin-sql-<driver>
qt自帶了大多數數據庫驅動,可以完美地支持數據庫的使用。對於數據庫的使用,我們可以直接qt驅動編譯進去,或者以插件的形式編譯進去。一般來說,最簡單地就是直接編譯進去,但使用插件形式的可以更加靈活,針對不同的需求將驅動插件添加。其中,<>代表的是驅動名,如果我想直接添加sqlite的支持話,形式如下:-qt-sql-sqlite。其他名稱可以自己查看參數裏,有詳細地介紹。

-system-sqlite
使用操作系統上的sqlite數據庫,如果是不太會移植的,可以考慮直接使用qt自帶的驅動。

no-xmlpatterns
-xmlpatterns
選擇對xml的支持,如果對網絡無需求的話,就不用加了。

-no-phonon
-phonon
phonon是qt中處理多媒體的模塊

-no-phonon-backend
-phonon-backend
與上面類似,只不過這兩者是以插件的形式加入支持。

-no-svg
-svg
svg即可縮放矢量圖形。

-no-scripttools
-scripttools
是否加入腳本工具的支持,這對php等腳本工程師來說是個很棒的參數。

-platform target
目標平臺,這可是關鍵了,如果不注意的話,編譯出來是x86上的話,哪怕是再牛的嵌入式工程師來也沒法幫你移植到開發板上。通常,本人是linux-arm-g++。

-no-mmx
-no-3dnow
-no-sse
-no-sse2
這四個參數是針對CPU的指令集。

-qtnamespace
把qt的庫封裝到命名空間。

-qtlibinfix
將所有的qt的.so庫重命名。

如果是-no-XX-,就說明編譯時不選擇這個參數,如過是-qt-XX-,說明我們可以編譯直接選用qt自帶的驅動,如果是-plugin-XX-,就是將驅動以插件形式編譯,而-system-XXX,當然是使用操作系統提供的驅動,不過那就需要您自己移植了,而且有時還要用第三方的API,就方便來說非常麻煩


-no-libtiff
-qt-libtiff
-system-libtiff
tiff是一種非常複雜的光柵圖像格式,並且有直接現成的C語言實現庫,因此選擇參數時就有了qt和system。

-no-openssl
-openssl
-openssl-linked
SSL(Security Socket Layer)是一個安全傳輸協議,在Internet網上進行數據保護和身份確認,而OpenSSL是一個開放源代碼的實現了SSL及相關加密技術的軟件包,在qt中,我們可以選擇直接支持,或者OpenSSL鏈接支持。

以上是第三方庫的參數選擇,緊接着就是qt附加參數,在附加參數裏,我們可以指定編譯的部分及加入參數來獲取信息。

-make
-nomake
一句話說明就是可以通過這兩個參數來選擇哪些要編譯,哪些不需要,通過適當的選擇,可以大大加快編譯的速度。

-R <string>
-l <string>
這兩個參數是爲編譯時增加一個庫的運行路徑及頭文件的路徑,比如使用tslib作爲開發觸摸驅動時,我們就應使用這兩個參數來指定tslib的庫路徑和頭文件路徑。

-no-rpath
-rpath
簡單地說,就是告訴動態加載器,到-rpath指定的目錄中尋找編譯時須要的動態鏈接庫,語法就與上面的參數結合,比如 -rpath -R/home/xxxx。

-continue
這個參數的作用就是當出現錯誤時依然進行配置編譯,換我是不會加上的。

-verbose, -v
顯示配置的每一步的具體信息。

-no-optimized-qmake
-optimized-qmake
是否編譯生成優化過的qmake。

-no-nis
-nis
NIS(網絡信息服務)是一個提供目錄服務的RPC(遠程過程調用)應用服務,當然沒網絡需要的可以再次華麗地無視。

-no-cups
-cups
CUPS給Unix/Linux用戶提供了一種可靠有效的方法來管理打印。它支持IPP,並提供了LPD,SMB(服務消息塊,如配置爲微軟WINDOWS的打印機)、JetDirect等接口。CUPS還可以瀏覽網絡打印機。它的開發提供者是蘋果公司。

-no-iconv
-iconv
iconv是一個計算機程序以及一套應用程序編程接口的名稱。它的作用是在多種國際編碼格式之間進行文本內碼的轉換,這對跨語言Qt開發人員來說是很有用的。

-no-pch
-pch
是否支持預編譯過的頭文件。預編譯頭就是把一個工程中的一部分代碼,預先編譯好放在一個文件裏(通常以.pch爲擴展名),這個文件就稱爲預編譯頭文件。這些預先編譯好的代碼在工程開發的過程中不會被經常改變。如果這些代碼被修改,則需要重新編譯生成預編譯頭文件。

no-dbus
-dbus
-dbus-linked
是否編譯編譯QtDBus模塊。dbus是freedesktop下開源的Linux IPC通信機制,本身Linux 的IPC通信機制包括,管道(fifo),共享內存,信號量,消息隊列,Socket等。在Qt中DBUS是有單獨的模塊的,可見其重要性。

-reduce-relocations
對於額外的庫鏈接器優化,可以減少編譯中的再定位。

no-separate-debug-info
-separate-debug-info
是否存儲debug信息在.debug,一般爲了查錯,還是選擇存儲吧。

xplatform target
即交叉編譯的目標平臺,一般來說根據你所要移植的目標板來確定。

-no-feature-<feature>
-feature-<feature>
選取qte的feature編譯,對於這個,我理解爲特性,特性的描述你可以參考src/corelib/global/qfeatures.txt,在這裏面對於每個特性都有比較充分的講解。對於特性地選擇,也是要根據開發需求進行,如果裁剪適當,能大大爲qte庫瘦身。

-embedded <arch>
嵌入式平臺架構選擇,可以選擇arm,mips,x86及generic,視你的目標平臺決定吧。

-armfpa
-no-armfpa
這個參數也只是針對ARM平臺的,是否加入對於基於ARM的浮點數格式的支持,通常,這個參數在編譯時會自動選擇。

-little-endian
-big-endian
目標平臺的大端和小端選擇。

-host-little-endian
-host-big-endia
主機平臺的大端和小端選擇。

-no-freetype
-qt-freetype
-system-freetype
選擇freetype,FreeType庫是一個完全免費(開源)的、高質量的且可移植的字體引擎,它提供統一的接口來訪問多種字體格式文件。

-qconfig local
使用本地的qconfig配置文件來替代全部參數配置,可以裁剪控件級別的參數。

-depths <list>
顯示的像素位深。

-qt-decoration-<style>
-plugin-decoration-<style>
-no-decoration-<style>
這個是選擇qt的樣式風格。

-qt-gfx-<driver>
-plugin-gfx-<driver>
-no-gfx-<driver>
這個是相當重要的一個參數,選擇QtGui的圖形顯示驅動,比如我們在pc上使用qvfb模擬時,就應該加入對qfvb的支持。我們可以在linuxfb,transformed,qvfb,vnc,multiscreen這幾個中選擇。在平常的開發板上,選擇linuxfb即可。

-qt-kbd-<driver>
-plugin-kbd-<driver>
-no-kbd-<driver>
選擇鍵盤的驅動支持,可以支持usb鍵盤,串口鍵盤等等,也是在tty,usb ,sl5000, yopy, vr41xx ,qvfb中選擇。

qt-mouse-<driver>
-plugin-mouse-<driver>
-no-mouse-<driver>
鼠標的驅動支持,一般都會選擇tslib,可以完美地支持觸摸屏,在pc,bus,linuxtp,yopy,vr41xx,tslib,qvfb中選擇吧。

-iwmmxt
加入iWMMXt指令的編譯,也只是部分XScale架構才具有。

-no-glib
-glib
glib庫對應即gtk庫,就也是說加入後可以使用gtk。

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