Boost库“瘦身”

Boost介绍:
          Boost库由C++标准委员会库工作组成员发起,向C++程序员提供免费的(free)、同行审查的(peer review)、可移植的(portable)高质量C++源程序库。为我们带来的是最新最前沿的技术,也可以说是一个不折不扣的“准”标准库;boost库功能组件众多,内容非常的“庞大”;我们常用的也是比较有名气的几个库:Regex(正则表达式库)、smart_ptr(智能指针)、Thread(可移植的C++多线程库)、Graph(图形组件和算法)、Pool(内存池管理)等。

详细的内容见Boost官网:http://www.boost.org/

关于boost安装和boost库的“瘦身”网上的教程比较的多,也比较的乱,这里我整理了一下,下面介绍一下:

Boost安装:
          这里以windows下面的安装为例,步骤如下:

           1. 从boost网站(http://www.boost.org/)上下载安装包boost_1_55_0.zip(目前版本是1.55.0),安装包大约为98 MB,解压到磁盘的任意位置,注意要预留足够大的磁盘空间,解压完全安装后大约需要几个G的空间;

          2. 解压完成,到其解压目录下运行bootstrap.bat,生成bjam.exe文件(bjam.exe是生成boost库的.lib文件的工具);

          3. 命令行运行bjam编译:
              这里编译分为两种:完全编译和部分编译;
              完全编译:
                             完全编译会生成所有的debug,release版的静态库和动态库;
                             命令行: bjam--toolset=msvc-11.0 --build-type=complete stage
              部分编译:
                            很多库我们在开发过程中并不会用到,完全编译费时费力,我们可以使用bjam仅对我们需要的库进行编
                            译;如: bjam --toolset=msvc-11.0 --with-date_time,该命令行就仅编译了date_time库;
              注:bjam参数见图片1
              
          4. 编译完成后可以到boost\bin.v2目录下面找到生成的*.dll和*.lib;

boost库的命名规则:
          boost编译完成后,我们到boost\bin.v2目录下会找到很多*.lib文件;库文件名相似而且都比较长,名字中各部分都代表什么意思呢,下面介绍一下:
          举一个例子说明如下:
          libboost_filesystem-vc110-mt-gd-1_55.lib
          前缀:           统一为lib;
          库名字:       以boost_开头,这里是boost_filesystem
          编译器标示:编译该库的编译器名称和版本 这里是vc110;
          多线程标示:支持多线程使用-mt标示,没有这个标示表示不支持;
          ABI标示:     标示了boost库的几个编译连接选项,这里是gd;
                               gd: dubug版
                               s  : 静态库标示
          版本号:      boost版本号,这里是1_55;

Boost"瘦身":
         boost库是很棒的库,但是boost太过于庞大了,使用起来非常的不方便;bcp的出现解决了这个问题,bcp是一个专门用于提取boost子集的工具,非常有用。
        下面介绍一下bcp的使用:
         1.拷贝boost根目录下面的bjam.exe到tools\bcp目录下,点击运行或者使用命令行运行bjam.exe;

         2.运行完成后,会在目录bin.v2\tool\bcp目录下面找到bcp.exe, 把bcp.exe拷贝到boost根目录下面,然后我们就可以使用bcp.exe给boost来“瘦瘦身”了;
         3.命令行运行bcp,在命令行中直接运行bcp.exe就可以看到所有命令帮助如下图;

         介绍两条比较重要的:
            a、bcp --list [options] module-list   列出module-list及其所依赖的文件列表;如options是boost/smart_ptr,就会列出与库smart_ptr相关的所有文件;

b、bcp [options] module-list output-path 提取出 module-list及其所依赖的文件列表; 如options是boost/smart_ptr, output-path为C:\smart_ptr  就会提取出来与库smart_ptr相关的所有文件到 C:\smart_ptr目录下;这个正是我们需要,我们程序只需要包含这个目录就可以使用smart_ptr;

bcp.PNG

         OK,这样就完成了boost“瘦身”了。
使用boost:
         介绍完了boost“瘦身”了,我们就可以放心的使用了,boost库的大部分组件(近90%)不需要编译,直接包含头文件既可以,例如我们要使用smart_ptr这个库,我们只需要在我们的源文件包含下面内容:
         #include <boost/smart_ptr.hpp>         //使用smart_ptr库
         当然还需要using namespace boost这个;
         PS:我们也看到了,boost库文件与我们平常使用的头文件不同,boost把C++类的声明和实现放在了一个文件中,而不是分成两个文件,所以文件的后缀都是*.hpp;这样做的原因有两个:
         1.就是和普通的头文件区分;
         2.boost不需要预先编译,直接引入工程即可编译链接,方便库的使用;

         当然还有十几个库需要编译成静态库或动态库才可以使用;库的包含方式如普通的库文件一样,这里就不加赘述了;

ps:具体哪些库需要编译,看这里的条目3。


boost库的准备工作基本上就这样了!关于每一个库的具体使用大家可以网上查阅资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值