欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

C++中Boost庫(kù)裁剪與其應(yīng)用詳解

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

前言

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

Boost 是如此強(qiáng)大,毫無(wú)疑問(wèn)它也很大。Windows 上安裝 boost 需要占用 2G+ 的空間,編譯配置起來(lái)也十分麻煩。

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

解決方案用一句話說(shuō)就是:

裁剪 boost 庫(kù),并在項(xiàng)目中內(nèi)嵌 boost 源碼,使項(xiàng)目脫離對(duì) boost 庫(kù)的依賴。

通過(guò)一個(gè)例子說(shuō)明 boost 庫(kù)裁剪的意義

或許你還是不明白 boost 庫(kù)裁剪到底是啥意思,那我們一起來(lái)跑一個(gè)例子。以我的 cmake-templates 里面的一個(gè) boost 代碼為例,源碼只有一個(gè) 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;
}

程序運(yùn)行輸出大概是:

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

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

如果你的系統(tǒng)配置了 Boost,那就到上面的鏈接下載源碼,進(jìn)入 boost 文件夾,這里一共有三個(gè)文件:一個(gè) main.cpp、一個(gè) CMakeLists.txt,一個(gè) README 說(shuō)明文檔。

但要運(yùn)行這個(gè)程序并不容易,尤其是在一切都要手工的 Windows 系統(tǒng)上:你必須自己去下載合適的 boost 版本,設(shè)定一些環(huán)境變量。

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

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

你不禁感慨,為了運(yùn)行一個(gè) 20 行不到的小程序,居然要手工安裝兩三個(gè) G 的 boost 庫(kù)!

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

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

我想你一定能把這個(gè)程序跑起來(lái)的。無(wú)論你用什么操作系統(tǒng),用什么編譯器。

運(yùn)行起來(lái)更省心,這就是 boost 庫(kù)裁剪的意義。

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

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

首先,下載 Boost 庫(kù)源碼,你可以去 官網(wǎng)。我們只需要官方 release 的源碼里的 boost 和 libs 文件夾下的東西,所以我建議你下載我的備份。因?yàn)樗娴男『芏?,下載起來(lái)也很快。而且里面還打包了用于提取 boost 源碼的工具 bcp1。

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

在 cmake 里,這個(gè)過(guò)程大概是

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

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

你可以仔細(xì)對(duì)比看看鏈接系統(tǒng)安裝的 Boost 庫(kù)和使用自帶的裁剪后的 Boost 庫(kù)(我把它稱為 MiniBoost)兩者的區(qū)別和聯(lián)系

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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能有所幫助,如果有疑問(wèn)大家可以留言交流。

上一篇:C++ boost 時(shí)間與日期處理詳細(xì)介紹

欄    目:C語(yǔ)言

下一篇:C++中的friend函數(shù)詳細(xì)解析

本文標(biāo)題:C++中Boost庫(kù)裁剪與其應(yīng)用詳解

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1996.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有