青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

詳解 Qt 選擇性編譯和庫裁減

Posted on 2011-07-26 06:38 RTY 閱讀(587) 評論(0)  編輯 收藏 引用 所屬分類: QtC/C++轉載隨筆

本文介紹的是 Qt 選擇性編譯和庫裁減,幫你節約時間的一篇文章,先來看內容。

AD:

Qt 選擇性編譯裁減是本文將要介紹的內容,編譯一次Qt要耗費太多的時間,常常是越著急用它,編起來越慢。其實通過很簡單的幾招可以幫你節省編譯的時間。下面就一一道來:

編譯之前確定哪些功能是不必要的,對編譯樹進行簡單裁剪

比如最常見的,像demos, examples,雖然很有參考價值,但完全可以放在后面用到的時候再單獨編譯小工程,這樣可以節省不少時間。經過實踐,最簡單的方法是修改configure文件,在該文件中有個指定編譯目錄的字段:

  1. QT_DEFAULT_BUILD_PARTS=”libs tools examples demos docs translations” 

可以把examples、demos和docs從這里去掉,但要注意,別的可不能隨便去掉。

如果在后面的使用中發現有些小工程需要編譯了,可以采用一般編譯Qt程序的方法,即用Qt安裝目錄bin下的qmake來生成Makefile,同樣可以編譯和測試例子代碼,一點也不影響使用。

裁剪Qt模塊

Qt從4版本開始采用了模塊化的形式,將獨立的功能封裝在獨立的里,所以可以很簡單的去掉一些不需要的,這樣也能節省編譯時間和對硬盤空間的占用。 Qt的configure配置提供了一些設置模塊的方法,如它支持-no-svg和-no-webkit,通過configure的時候加這些選項就可以去掉這部分支持。相應的還有很多小的功能可以通過configure參數的形式配置,具體的參考configure –help的輸出。在查看configure幫助的時候特別要注意加*號的內容,也就是Qt默認的configure選項,有的時候默認選項可不一定是討人喜歡的哦。

Qt桌面版本默認會盡量多的編譯feature進去,這樣有一定的好處,就是用戶可以用到所有的Qt功能,但壞處也很明顯,那就是編譯出來的Qt超級大,特別是編譯debug版本,基本上要占1到2G的空間,所以個人感覺研究一下configure的選項還是很有必要的。另外, 默認狀況下有些插件是不會編譯的,比如數據庫插件,往往需要用戶自己根據需要編譯,這一點也要注意。

針對嵌入式版本的配置

Qt的嵌入式版本本身就支持feature裁剪,我們可以充分利用這一特性讓Qt庫盡量變小。具體的做法是要做一個自己的qconfig-[myconfig].h特性文件,該文件中定義你要去掉Qt中的哪些feature。在configure的時候加“-qconfig myconfig” 選項, Qt就會根據你給出的配置文件來編譯,以達到裁剪的目的。這里要強調一下,這種裁剪方式只適用于嵌入式版本。這里的myconfig可以用任何你喜歡的名字來代替。
在qt的代碼中已經給出了一些qconfig頭文件的例子,默認編譯采用full config也就是

不裁剪任何feature。所有Qt預定義好的qconfig文件,可以在src/corelib/global/下找到,包括qconfig-minimal.h, qconfig-small.h, qconfig.medium.h,qconfig-large.h和qconfig-dist.h,也就是從裁剪量由多到少都有據可依。如果要添加你自己的配置文件,要在src/corelib/global下建立一個形如qconfig-xxx.h的文件,這個xxx也就是你要在configure的時候傳入的qconfig參數。筆者測試使用的Qt版本是4.4.1,這個版本的build system有個小毛病,就是如果你指定的qconfig參數實際上沒有qconfig-xxx.h文件對應, build不會停止,它只會給出一個不起眼的提示,編譯過程會繼續, 這一點挺讓人費解的。而且這種情況下Qt編譯使用的配置基本上和fullconfig相同,鑒于它的讓人迷惑的舉動,個人覺得有必要提醒大家一下,使用自定義qconfig的時候一定要確定配置文件放對了位置,而且qconfig參數給的正確。

一般我們的建議是在桌面上測試階段編譯一個full的版本,再根據你的項目使用Qt feature的情況總結哪些可去掉的feature。 feature之間有千絲萬縷的依賴關系,這個問題也是困擾很多人的難點所在。具體的依賴可以查閱src/corelib/global/qfeatures.h和src/corelib/global/qfeatures.txt(描述依賴關系的文檔)。另外,Qt里還提供了一個可視化的配置依賴的工具,叫做qconfig,在QTDIR/tools/qconfig目錄。該工具需要基于Qt桌面版本編譯。如在我的linux系統下可以用下面的命令來編譯:

  1. $ cd qt-embedded-linux-commercial-4.4.1/tools/qconfig  
  2. $ /usr/local/Trolltech/Qt-4.4.3/bin/qmake  
  3. $ make 

編譯成功后運行./qconfig,初始要打開qfeatures.txt. Qconfig讀取該文件生成一個樹狀圖,該圖很清楚的顯示出feature之間的依賴關系。如下圖所示,如果你去掉了LINEEDIT這個feature,用到該控件的combobox也就不能繼續使用了。有了這個工具裁剪Qt變得簡潔直觀,方便了很多。

選定了你要去掉的feature后點擊菜單File->Save As..會彈出保存文件的頁面,文件名字應該定義成qconfig-xxx.h的形式,這樣你在configure的時候就可以傳入相應的qconfig參數了。你還可以通過選擇File->Open打開現有的qconfig-xxx.h文件,通過修改已經有的文件更快的編輯配置。

根據筆者測試,未經裁剪的qte4.4.1編譯出來為:

  1. libQtCore.so是2.6M  
  2. libQtGui.so是9.5M 

如果用small來編譯,就能縮小為:

  1. libQtCore.so是2.0M  
  2. libQtGui.so是5.7M 

差異還是比較明顯的。

小結:Qt 選擇性編譯裁減的內容介紹完了,希望本文對你有所幫助。更多內容請參考編輯推薦。

【編輯推薦】

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲性视频h| 老司机一区二区三区| 久久久久久网| 亚洲国产成人久久综合一区| 亚洲精品老司机| 欧美一区国产一区| 欧美激情亚洲| 国产午夜精品久久| 一本色道久久综合亚洲精品小说 | 久久精品99无色码中文字幕| 久久亚洲欧洲| 国产精品亚洲аv天堂网| 亚洲第一精品福利| 午夜精品久久久久| 亚洲国产精品va在线观看黑人| 性久久久久久久久| 欧美国产精品| 欧美一区二区三区电影在线观看 | 国产精品一区在线播放| 亚洲高清久久久| 欧美亚洲尤物久久| 91久久久在线| 欧美一区亚洲| 国产精品久久久久免费a∨| 91久久久亚洲精品| 久久久精品国产免费观看同学| 久久亚洲色图| 亚洲一二三级电影| 欧美激情视频一区二区三区免费| 欧美国产精品劲爆| 狠狠色伊人亚洲综合网站色| 亚洲一区日本| 亚洲国产小视频| 久久久久久久高潮| 国产色综合久久| 亚洲尤物精选| 亚洲精选成人| 欧美高清不卡| 亚洲第一伊人| 久久综合九色九九| 亚洲女ⅴideoshd黑人| 欧美理论视频| 亚洲人午夜精品| 欧美88av| 久久久久久网址| 国产一区日韩一区| 亚洲欧美日韩综合国产aⅴ| 女主播福利一区| 久久国产日韩欧美| 国产亚洲欧美一区二区三区| 欧美一区二区三区视频| 正在播放日韩| 国产精品99一区| 一区二区三区精品在线| 欧美粗暴jizz性欧美20| 久久成人免费网| 国产一区二区久久| 久久免费精品视频| 午夜精品一区二区在线观看| 国产精品中文字幕欧美| 香蕉视频成人在线观看| 亚洲综合另类| 国产日韩欧美电影在线观看| 久久国产免费| 欧美一区三区三区高中清蜜桃| 老司机精品视频网站| 国产自产2019最新不卡| 久久精品人人| 久久裸体视频| 亚洲电影av在线| 亚洲国产高清自拍| 欧美激情乱人伦| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美成人亚洲成人日韩成人| 久久婷婷综合激情| 亚洲国产精品国自产拍av秋霞| 亚洲免费在线电影| 亚洲午夜在线观看视频在线| 国产精品久久久久久久app| 西西裸体人体做爰大胆久久久| 欧美电影电视剧在线观看| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品黄视频| 性色av一区二区三区红粉影视| 亚洲国产成人久久综合| 欧美精品亚洲二区| 亚洲欧美欧美一区二区三区| 亚洲男人的天堂在线| 国产一区二区毛片| 免费日韩成人| 欧美极品在线播放| 亚洲欧美日韩国产精品| 欧美一区在线直播| 亚洲黄色大片| 一区二区三区精品在线| 国产欧美午夜| 巨乳诱惑日韩免费av| 欧美激情视频免费观看| 亚洲欧美视频一区| 久久久久久免费| 夜夜嗨av一区二区三区中文字幕| 欧美韩日亚洲| 国产精品久99| 欧美本精品男人aⅴ天堂| 欧美日韩在线不卡| 欧美在线视频在线播放完整版免费观看| 日韩亚洲精品视频| 国产性天天综合网| 欧美激情自拍| 国产精品日韩在线一区| 欧美mv日韩mv国产网站| 欧美精品一区二区三区视频| 欧美一区二区三区四区在线 | 亚洲免费人成在线视频观看| 欧美一级黄色网| 亚洲精品综合精品自拍| 亚洲特色特黄| 亚洲国产小视频| 亚洲欧美国产三级| 亚洲人成7777| 欧美资源在线| 亚洲性av在线| 欧美sm重口味系列视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了中文 | 欧美精品一区二区三区在线播放| 亚洲国产欧美一区二区三区丁香婷| 快射av在线播放一区| 欧美日韩亚洲精品内裤| 久久嫩草精品久久久久| 欧美色图五月天| 欧美ab在线视频| 国产人成精品一区二区三| 亚洲人久久久| 1769国产精品| 性色av一区二区三区| 亚洲天堂偷拍| 欧美韩日亚洲| 免费亚洲视频| 国模套图日韩精品一区二区| 在线中文字幕一区| 亚洲精品色图| 久久这里有精品15一区二区三区| 亚洲免费观看高清在线观看| 性一交一乱一区二区洋洋av| 亚洲午夜未删减在线观看| 免费精品视频| 免费不卡亚洲欧美| 国产一区二区三区久久 | 亚洲欧洲综合另类| 一色屋精品亚洲香蕉网站| 亚洲一区二区在| 亚洲天堂激情| 欧美日本在线看| 欧美激情中文不卡| 国外视频精品毛片| 午夜欧美大片免费观看| 亚洲欧美成人网| 欧美日韩伊人| 日韩一区二区电影网| 日韩一级精品视频在线观看| 免费观看日韩| 欧美成人有码| 亚洲国产精品久久久久久女王| 夜夜爽www精品| 一区二区三区不卡视频在线观看| 亚洲欧美日韩国产精品| 亚洲综合日韩中文字幕v在线| 欧美一级淫片aaaaaaa视频| 香蕉成人伊视频在线观看| 欧美午夜精品久久久久久久| 亚洲作爱视频| 亚洲欧美国产日韩中文字幕| 欧美日韩一区在线| 99xxxx成人网| 亚洲欧美久久久| 国产精品一区视频| 欧美一区二区视频观看视频| 久久久久欧美| 伊人成人在线视频| 久久亚洲免费| 亚洲国产影院| 亚洲无玛一区| 国产九色精品成人porny| 亚洲欧美另类国产| 久久久久综合网| 亚洲大胆女人| 欧美激情区在线播放| 日韩午夜在线电影| 亚洲自拍偷拍福利| 国产欧美婷婷中文| 久久久久久久激情视频| 欧美高清视频一区| av成人手机在线| 国产精品久久7| 午夜视频在线观看一区二区三区 | 亚洲午夜影视影院在线观看| 午夜精品免费视频| 国内成人精品视频| 免费91麻豆精品国产自产在线观看| 久久av一区二区三区亚洲|