boost简介
参考链接:https://blog.csdn.net/qq_45491628/article/details/131367797
1998 年,Beman G.Dawes(C++标准委员会成员之一)发起倡议并建立了Boost 社区,其目的是向C++程序员提供免费的、经同行审查的、可移植的、高质量的C++源程序库。
Boost库是一款高效的C++跨平台开发库。Boost库官方版提供了丰富的模板类和函数接口,并实现了诸如智能指针、容器、算法等常用功能。Boost库还支持多种操作系统和编译器环境,并提供了详细文档和示例代码以便用户进行快速学习和上手使用
它使得C++编程更优雅、更有活力、更高产,C++11的标准有三分之二来自boost库。Boost 程序库可以与C++标准库很好地共同工作,因此Boost库可以适合最后的标准化。
boost编译和配置
参考链接:https://www.jb51.net/article/191861.htm
参考链接:https://blog.csdn.net/qq_45491628/article/details/131367797
下载
解压
我这里直接解压到D盘,解压后目录【D:\boost_1_73_0】
最上层结构:
#存放配置脚本和说明文件
├── boost # 最重要的目录,90%以上的Boost程序库源码都在这里
├── doc # HTML 格式的文档,也可以生成PDF格式文档
├── libs # 所有组件的示例、测试、编译代码和说明文档
├── more # 库作者相关的文档
├── status # 用于测试Boost库的各个组件
└── tools # b2、quickbook等自带工具
Boost目录结构:(在大多数情况下,我们只需要关心boost子目录,这里面以头文件的形式分门别类地存放了我们要使用的库代码)
├── accumulators # 累加器库
├── algorithm # 算法库
├── align # 内存对齐库
├── archive # 序列化库
├── asio # 异步并发库
├── assert # 断言库
├── assign # 赋值初始化库
├── atomic # 原子操作库
├── beast # 高级网络通信库
├── bimap # 双向关联数组
├── bind # bind表达式
├── chrono # 时间处理库
... # 其他库
├── python # python库 (把C++类和函数映射到Python之中)
├── yap # 表达式模板库
...
编译
注意:
1、Boost库的头文件与我们平常所用的头文件*.h或C++标准库的头文件(没有后缀名)不同,这正是Boost的独特之处。它把C++类的声明和实现放在了一个文件中,而不是分成两个文件,即.h+.cpp,故文件的后缀是.hpp。
2.这里需要说明一下,刚开始拿到压缩包解压后,想着能够像GDAL库一样,直接拷贝到工程目录下进行包含引用。然而发现引用进去文件报错不能打开。 所以boost库不能直接拷贝进去使用,对于有些文件还是需要编译一下静态库进而引用的。这里的编译与GDAL和OpenCV的安装有一定的区别,这里的编译安装,只是在对应的文件下生成静态库。
执行bat
以管理员身份运行“VS 2015 的 x64 本机工具命令提示”
执行命令
cd D:\
bootstrap.bat // 执行失败需要查看bootstrap.log,成功后会得到b2.exe,
如果没有生成b2.exe,说明生成失败,看bootstrap.log报错。这里是因为vs工具集版本原因。
参考链接:https://stackoverflow.com/questions/74348431/unknown-toolset-vcunk-executing-bootstrap-bat-of-boost-library
根据自己的vs版本改成对应命令就可以,例如我的是vs2015,改为使用命令【bootstrap.bat vc14】,下面是对应信息。
vs2008 : msvc-9.0,
vs2010 : msvc-10.0,
VS2012、VS2013:msvc-12.0
vs2017 : msvc-14.1,
vs2015 : msvc-14.0,
linux :gcc
执行b2.exe
bat执行完后会生成exe文件
在命令行中输入:
b2.exe
等待程序编译完成,会在目录下生成bin.v2和stage两个文件夹,其中bin.v2下是生成的中间文件,大小在2.4G左右,可以直接删除。stage下才是生成的lib文件。文件如下:
说明:
这里通过双击b2.exe进行编译的,默认在stage下生成lib文件夹,里面只包含着静态库。如果想要生成dll动态库,可./b2 --help查看参数说明,然后需要输入相应的编译命令如
配置
(图片目录与实际不一样,只是作位置参考)
1、项目(右键)->属性
2、点击vc++目录:包含目录添加【D:\boost_1_73_0】,库目录添加【D:\boost_1_73_0\stage\lib】
3、点击链接器->常规->附加库目录:添加【D:\boost_1_73_0\stage\lib】
测试使用
代码如下:
// 工程:属性 =》配置属性 =》C/C++ =》常规 =》附加包含目录 填上:D:\boost_1_73_0
// 工程:属性 =》配置属性 =》链接器 =》常规 =》附加库目录 填上:D:\boost_1_73_0\stage\lib
#include <iostream>
#include <string>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
int main(int argc, char* argv[])
{
std::string file;
std::cin >> file;
std::cout << file << " : " << file_size(file) << std::endl;
return 0;
}