准备工作
- 下载boost库。官方下载地址:为了避免官方版本下载较慢,可以在这里下载版本为1.78
- 安装Virtual Studio,测试过2013以上的版本都可以编译最新版本的boost库,2013之前的版本没有做过测试。
启动编译
启动vistual studio的命令环境【参考如下】
在命令提示符下切换boost源码路径为当前路径
在命令提示符下,执行boost源码中的bootstrap.bat
执行效果如下:
执行后,在boost源码目录下生成b2.exe,接下来使用b2.exe执行编译工作
b2具体编译参数如下表
参数名 | 可选参数 |
---|---|
variant | 决定编译什么版本,debug版本生成的lib库命名中含有d标识,没有标识则为release版本 |
link | 链接方式,决定生成动态库还是静态库 |
threading | 决定使用单线程模式还是多线程模式 |
address-model | 决定编译32位还是64位版本 |
toolset | 决定使用的vs版本,前提是系统中已经安装对应编译器版本的工具集 |
include | 附加头文件的包含路径 |
define | 附加宏定义 |
runtime-link | 标准库的链接方式,static:静态链接运行时库,项目指定MT编译使用。shared:动态链接运行时库,项目指定MD编译时使用 |
–with- | 指定只编译某个库,如–with-regex只编译ragex库 |
–show-libraries | 显示所有需要编译库的名称,配合–with进行编译过滤 |
如:
b2 runtime-link=static link=static threading=multi(生成静态库,该静态库静态链接C运行库)
生成的文件:
libboost_thread-vc142-mt-sgd-x64-1_74.lib
libboost_thread-vc142-mt-s-x64-1_74.lib
lib库命名中,s代表静态链接运行时库(MT),gd代表debug版本。
b2 runtime-link=shared link=static threading=multi(生成静态库,该静态库动态链接C运行库)
生成的文件:
libboost_thread-vc142-mt-gd-x64-1_74.lib
libboost_thread-vc142-mt-x64-1_74.lib
可见,动态链接运行时库,lib库命名中不包含s字符
b2 runtime-link=shared link=shared threading=multi(生成动态库,该动态库动态链接C运行库)
生成的文件:
boost_thread-vc142-mt-gd-x64-1_74.lib
boost_thread-vc142-mt-x64-1_74.lib
boost_thread-vc142-mt-gd-x64-1_74.dll
boost_thread-vc142-mt-x64-1_74.dll
lib库命名规则的含义
- 静态库lib以lib开头,而动态编译的lib库不以lib开头,需要搭配dll使用。如libboost_threadxxxx.lib为静态编译,boost_threadxxx.lib为动态编译
- vc142表示编译器名称及版本,vc142对应virtual studio 2019
- 命名中包含mt代表threading=multi,没有mt代表threading=single
- 由gd代表debug版本,没有则代表release版本
- x64表示64位版本,同理x32则代表32位版本
- s代表C运行时的链接方式为静态链接,等同与vs的MT参数,不带s则表示为动态链接版本,等同vs的MD
- 1_74代表Boost 1.74版本
toolset msvc对应关系
编译器版本 | msvc | toolset |
---|---|---|
vs2010 | v100 | msvc-10.0 |
vs2013 | v120 | msvc-12.0 |
vs2015 | v140 | msvc-14.0 |
vs2017 | v141 | msvc-14.1 |
vs2019 | v142 | msvc-14.2 |
vs2022 | v143 | msvc-14.3 |