Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,在1998年由Beman G.Dawes发起倡议并建立。使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程、泛型编程、设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简洁、优雅、灵活和高效。
Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。大部分Boost库功能的使用之需要包括相应的头文件即可,少数需要连接库。
Boost社区根据目标平台的操作提供了Linux和Windows版本,支持预编译版本和源代码版本的安装。
# 官方网站
https://www.boost.org/
# 下载地址
https://www.boost.org/users/download/
# 预编译版本下载地址
https://sourceforge.net/projects/boost/files/boost-binaries/
最上层结构
boost_1_73_0$ tree -L 1 -d
├── boost # 最重要的目录和说明文件
├── doc # HTML 格式的文档,也可以生成PDF格式文档
├── libs # 所有组件的示例、测试、编译代码和说明文档
├── more # 库作者相关的文档
├── status # 可用于测试Boost库的各个组件
└── tools # b2、quickbook等自带工具
Boost目录结构
boost子目录里面包含了我们可能使用到的所有的库代码,按照类型分别放在不同的目录中,通常我们只要关心这个目录就够了。
/boost_1_73_0/boost$ tree -d -L 1
├── accumulators # 累加器库
├── algorithm # 算法库
├── align # 内存对齐库
├── archive # 序列化库
├── asio # 异步并发库
├── assert # 断言库
├── assign # 赋值初始化库
├── atomic # 原子操作库
├── beast
├── bimap # 双向关联数组
├── bind # bind表达式
├── callable_traits
├── chrono # 时间处理库
...
├── python # python库
...
在安装环境后,使用大部分的Boost库只需要在自己的源代码里包含对应库的头文件即可。如:
#include <boost/python.hpp>
#include <boost/python/list.hpp>
#include <boost/python/module.hpp>
#include <boost/assert.hpp>
这里介绍在Windows环境下安装预编译版本的boost库,以Boost_1.73.0为例。
预编译版本安装比较简单,只要下载指定版本并安装就可以。
预编译版本下载地址为:
https://astuteinternet.dl.sourceforge.net/project/boost/boost-binaries/1.73.0/boost_1_73_0-msvc-14.0-64.exe
双击安装在C:\boost_1_73_0
完全安装下会安装Python库,而Python库与当前系统下的python版本存在对应关系,可根据下表查找相应的boost库。
boost | python |
---|---|
1_73_0 | 3.8.2 |
1_72_0 | 3.8.0 |
1_71_0 | 3.7.4 |
1_70_0 | 3.7.2 |
1_69_0 | 3.7.0 |
这里介绍使用源代码编译安装的方式,以Boost_1.73.0为例
wget https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.bz2 --no-check-certificate
tar xvf boost_1_73_0.tar.bz2
cd boost_1_73_0
./boostrap.sh
./b2 --buildtype=complete install
boost有大量的库其实可以选择安装指定的库,这里为了方便我选择完全安装。
安装boost库时我直接按照默认的路径安装,最后会在/usr/local/lib目录下安装所有编译的libboost*库。如果需要指定路径,可以在编译时添加"–prefix=xxx"的路径参数,这样的话在安装后还需要手动将该路径添加到环境变量中。
如果系统中有多个python版本,可以通过"–with-python=python*"来指定python版本,默认情况下使用系统默认的版本。
完整编译费时费力,而且大部分的库可能在我们的开发过程中根本用不到,所以用户可以自行选择要编译的库。
相关执行命令如下:
查看所有必须编译才能使用的库
./b2 --show-libraries
在完全编译命令的基础上,使用–with或–without选项可以打开或者关闭某个库的编译,如:
./b2 --with-date_time --buildtype=complete install
将仅编译安装data_time库
《Boost程序库完全开发指南》
https://www.boost.org/doc/libs/1_73_0/