亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中Boost庫裁剪與其應用詳解

2020-01-26 14:24:20
字體:
來源:轉載
供稿:網友

前言

Boost 庫涵蓋的范圍極廣,有字符串和文本處理相關子庫比如 format 庫和 regexp 庫,有容器相關子庫比如 variant 庫(和 Qt 的 QVariant 有得一拼),有迭代器子庫比如 tokenizer 庫(可以把字符進行 tokenize),還有算法、函數對象和高階編程相關子庫如functional 庫、lambda 庫和 signal 庫,還有泛型編程、模板編程子庫如 call traits、mpl,還有并發編程相關的 thread 庫,等等等等。

Boost 是如此強大,毫無疑問它也很大。Windows 上安裝 boost 需要占用 2G+ 的空間,編譯配置起來也十分麻煩。

本文討論的是如何不配置 boost 庫而使用 boost 庫。

解決方案用一句話說就是:

裁剪 boost 庫,并在項目中內嵌 boost 源碼,使項目脫離對 boost 庫的依賴。

通過一個例子說明 boost 庫裁剪的意義

或許你還是不明白 boost 庫裁剪到底是啥意思,那我們一起來跑一個例子。以我的 cmake-templates 里面的一個 boost 代碼為例,源碼只有一個 main.cpp,里面只有如下幾行:

#include <cstdio>#include <boost/date_time/posix_time/posix_time_types.hpp>int main( void ){ namespace pt = boost::posix_time; pt::ptime now = pt::second_clock::local_time(); printf( "%s/t->/t%04d-%02d-%02d %02d:%02d:%02d/n"   , "date '+%Y-%m-%d %H:%M:%S'"   , (int)now.date().year()   , (int)now.date().month()   , (int)now.date().day()   , (int)now.time_of_day().hours()   , (int)now.time_of_day().minutes()   , (int)now.time_of_day().seconds() ); return 0;}

程序運行輸出大概是:

date '+%Y-%m-%d %H:%M:%S' -> 2016-07-11 19:33:19

這 20 行不到的代碼,展示了 Linux 系統下一個常用指令 date 輸出當前時間的效果(相當于命令行下輸入 date '+%Y-%m-%d %H:%M:%S')。

如果你的系統配置了 Boost,那就到上面的鏈接下載源碼,進入 boost 文件夾,這里一共有三個文件:一個 main.cpp、一個 CMakeLists.txt,一個 README 說明文檔。

但要運行這個程序并不容易,尤其是在一切都要手工的 Windows 系統上:你必須自己去下載合適的 boost 版本,設定一些環境變量。

在 Linux 下則比較簡單,只要三步(先下載源碼,并 cd 到源碼目錄):

sudo apt-get install -y libboost-all-dev cmakemkdir build && cd buildcmake .. && make && ./BOOST

你不禁感慨,為了運行一個 20 行不到的小程序,居然要手工安裝兩三個 G 的 boost 庫!

這時候 boost 庫的裁剪,就顯得尤為重要了。我們不希望拿到代碼的人還要費時間去配置 boost 庫,我們也不希望自己的代碼要十分小心地,才能跑起來。我們要讓自己的代碼不論什么情況都能迅速地跑起來!

我們裁剪后的 boost 庫,頭文件大概有 3.18 MB,cpp 文件有兩個約 11 KB??瓷先ネΥ螅菈嚎s完其實就 213 KB!拿到這份代碼,首先解壓 include.zip 到當前文件夾,然后運行 cmake 生成 VS 工程(或者 Linux 上的 makefile 工程),然后編譯、運行。完全不需要再管那煩心的 boost 庫的配置了!

我想你一定能把這個程序跑起來的。無論你用什么操作系統,用什么編譯器。

運行起來更省心,這就是 boost 庫裁剪的意義。

我要怎么裁剪出自己需要的部分?

我們來深究一下怎么拿到上面那 3.18 MB 的頭文件,11 KB 的 cpp 文件。

首先,下載 Boost 庫源碼,你可以去 官網。我們只需要官方 release 的源碼里的 boost 和 libs 文件夾下的東西,所以我建議你下載我的備份。因為它真的小很多,下載起來也很快。而且里面還打包了用于提取 boost 源碼的工具 bcp1。

然后,解壓下載到的壓縮包,進入源碼文件夾,新建一個文件夾,比如叫 output,然后在當前窗口打開命令行,輸入 ./bcp.exe boost/date_time/posix_time/posix_time_types.hpp output,這里 "./bcp.exe" 是我們的裁剪工具,"boost/date_time/posix_time/posix_time_types.hpp" 是我們自己項目中用到的 boost 頭文件,如果有多個頭文件,用空格隔開,把它們都敲進命令行。2最后的 "output" 是輸出文件夾。

在 cmake 里,這個過程大概是

1)在源碼根目錄新建 include 文件夾,在根目錄的 CMakeLists.txt 加上 include_directories( ${CMAKE_SOURCE_DIR} );

2)新建 libs 文件夾,把裁剪出來的 cpp 文件放到這個文件下的 MiniBoost 文件加下,然后參考 district10/bcp-example-1/libs 寫好 CMakeLists 文件,再到根目錄的 CMakeLists 文件加上 add_subdirectory( libs);3)將裁剪出來的 miniboost 鏈接到我們的二進制:target_link_libraries( ${PROJECT_NAME} MiniBoost )

你可以仔細對比看看鏈接系統安裝的 Boost 庫和使用自帶的裁剪后的 Boost 庫(我把它稱為 MiniBoost)兩者的區別和聯系

注意:一個需要注意的地方是,提取出來的頭文件里,boost/config/auto_link.hpp 里的內容最好刪掉,不然在 Windows 平臺上,boost 會嘗試自動鏈接。所以我通常把這個文件內容清空。

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能有所幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色偷偷av一区二区三区| 日韩av电影在线播放| 国产91精品最新在线播放| 在线观看亚洲区| 国产精品久久久久久久久| 国产成人精品一区| 欧美激情啊啊啊| 俺去了亚洲欧美日韩| 一本色道久久88精品综合| 青草青草久热精品视频在线观看| 欧美专区国产专区| 亚洲iv一区二区三区| 欧美日韩国产一区二区| 欧美日韩激情视频8区| 久久久久久91香蕉国产| 最近中文字幕2019免费| 欧美日韩中国免费专区在线看| 亚洲网站在线播放| 欧美xxxwww| 色青青草原桃花久久综合| 日韩精品中文字幕在线| 国产伦精品一区二区三区精品视频| 日韩精品在线私人| 欧美视频一二三| 日本三级久久久| 色综合五月天导航| 一区二区三区在线播放欧美| 欧美极品少妇xxxxⅹ喷水| 欧美美女15p| 欧美日韩成人黄色| 欧美性色xo影院| 国产精品久久久久77777| 中文字幕欧美亚洲| 欧美亚洲国产精品| 日韩精品极品视频免费观看| 日韩在线观看网站| 精品性高朝久久久久久久| 韩曰欧美视频免费观看| 国产精品视频网站| 在线视频欧美日韩精品| 国产在线观看精品一区二区三区| 日韩精品视频在线免费观看| 欧美麻豆久久久久久中文| 一区二区三区精品99久久| 在线国产精品播放| 精品一区二区三区四区在线| 97精品国产97久久久久久春色| 日韩欧美亚洲范冰冰与中字| 欧美精品videos性欧美| 日韩精品亚洲精品| 亚洲男人av在线| 久久中国妇女中文字幕| 亚洲社区在线观看| 91丨九色丨国产在线| 成人黄色大片在线免费观看| 欧美一区二区视频97| 久久天天躁狠狠躁夜夜爽蜜月| 91社区国产高清| 亚洲精品国产欧美| 91在线视频免费| 亚洲图片欧洲图片av| 亚洲午夜性刺激影院| 中文字幕精品一区久久久久| 久久成人人人人精品欧| 美女啪啪无遮挡免费久久网站| 性视频1819p久久| 亚洲香蕉成人av网站在线观看| 国产精品91免费在线| 日本精品久久久| 成人激情视频在线观看| 国产精品第2页| 欧美日韩中文字幕综合视频| 色噜噜狠狠色综合网图区| 国产精品揄拍500视频| 久久综合九色九九| 日韩精品一区二区视频| 亚洲黄在线观看| 91老司机精品视频| 亚洲欧美资源在线| 欧美性猛交xxxx富婆弯腰| 日本sm极度另类视频| 91久久国产精品91久久性色| 欧美另类在线观看| 国产精品高潮呻吟视频| www.亚洲一二| 亚洲午夜未满十八勿入免费观看全集| 国产日韩欧美电影在线观看| 国产精品视频中文字幕91| 91免费看国产| 日韩免费精品视频| 国内精品久久影院| 91色精品视频在线| 日韩三级影视基地| 欧美激情亚洲另类| 欧亚精品在线观看| 日韩高清免费在线| 中文字幕免费精品一区| 日韩高清av一区二区三区| 国产成人精品日本亚洲专区61| 这里只有精品久久| 久久亚洲精品小早川怜子66| 日韩精品久久久久久福利| 国产视频精品一区二区三区| 久久伊人精品天天| 欧美成人在线影院| 亚洲精品第一国产综合精品| 欧美黄网免费在线观看| 国产精品天天狠天天看| 久久精品一本久久99精品| 久久精品一区中文字幕| 精品久久久一区二区| 欧美与欧洲交xxxx免费观看| 日韩午夜在线视频| 最近2019年中文视频免费在线观看| 亚洲电影在线观看| 国产成人精品av在线| 欧美裸体xxxx极品少妇软件| 日本韩国在线不卡| 久热在线中文字幕色999舞| 日韩在线精品一区| 亚洲精品视频二区| 国产成人avxxxxx在线看| 久久久久中文字幕| 久久在线精品视频| 欧美成人激情视频| 黑人巨大精品欧美一区二区| 国产精品第七十二页| 在线观看久久久久久| 久久久久久久久综合| 欧美午夜久久久| 国内精品久久久久| 伊人久久五月天| 欧美亚洲一区在线| 日韩精品中文字幕视频在线| 81精品国产乱码久久久久久| 国产亚洲aⅴaaaaaa毛片| 91九色在线视频| 国产a∨精品一区二区三区不卡| 91精品国产高清久久久久久91| 欧美老女人性视频| 欧美老少做受xxxx高潮| 一区三区二区视频| 热re91久久精品国99热蜜臀| 欧美与黑人午夜性猛交久久久| 久久久久久久久综合| 欧美激情女人20p| 久久伊人精品天天| 精品美女久久久久久免费| 亚洲欧洲日产国码av系列天堂| 中文字幕九色91在线| 欧美日韩在线免费观看| 综合av色偷偷网| 97婷婷大伊香蕉精品视频| 久久久久久久久久国产精品| 中文字幕久久精品| 国产亚洲一区二区精品| 日韩亚洲欧美中文高清在线| 亚洲女人天堂成人av在线| 在线成人激情视频| 精品偷拍各种wc美女嘘嘘| 少妇久久久久久| 日韩电影第一页| 久久久视频免费观看| 欧美日韩成人网|