我目前用的是1.61.0版本


2、将MinGW下的bin目录完整路径设置到系统环境变量Path中,保证cmd命令行能找到gcc,g++等命令。


3、cmd进入到boost目录下面,执行"bootstrap.bat gcc",目录下会生成一个b2.exe


4、执行b2.exe开始编译。可以根据自身需要执行不同的编译命令,比如: 

bjam.exe stage –toolset=gcc –with-exception –with-locale –with-program_options –stagedir=E:\Boost\1.61\mingw610 link=static runtime-link=static

我编译1.60,用的命令是:bjam "toolset=gcc" install,结果生成c:\boost\include和 c:\boost\lib和C:\boost\bin.v2 三个文件夹

 

折腾了好几个小时,终于理清了Boost链接的组合方式,记录一下。


A1、动态链接Boost的动态库

A2、静态链接Boost的动态库


B1、动态链接VC运行库

B2、静态链接VC运行库


那么这样就有2x2=4种方式链接Boost。但是一般使用Boost的码农们都不会用动态链接的方式吧,因为Boost的头文件默认都是静态链接的

而且动态链接还要附带Boost的DLL文件,另一方面,我们可能并不想让别人知道我们用了Boost。基于这些原因,本文只考虑静态链接Boost库的方式


再说说MSVC,一个项目有Debug和Release模式,还可以设置是动态链接VC库还是静态链接VC库


1、动态链接VC的Boostlib + 动态链接VC库(MD) + Debug

2、动态链接VC的Boostlib + 动态链接VC库(MD) + Release

3、动态链接VC的Boostlib + 静态链接VC库(MT) + Debug

4、动态链接VC的Boostlib + 静态链接VC库(MT) + Release

5、静态链接VC的Boostlib + 动态链接VC库(MD) + Debug

6、静态链接VC的Boostlib + 动态链接VC库(MD) + Release

7、静态链接VC的Boostlib + 静态链接VC库(MT) + Debug

8、静态链接VC的Boostlib + 静态链接VC库(MT) + Release


也就是说,为了编译一个比较通用的,能够适应项目的各种设置的Boost库,每个Boost的模块需要编译8个不同的lib文件。

编译参数中不特别指定variant的话,就是把Debug和Release都编译了,所以我们只需要编译2次就可以获得每个lib的8种不同的文件。


bjam.exe --build-dir=E:/Boost/Boost_1.55.0_VC2013_X64/temp --stagedir=E:/Boost/Boost_1.55.0_VC2013_X64 link=static runtime-link=static address-model=64

bjam.exe --build-dir=E:/Boost/Boost_1.55.0_VC2013_X64/temp --stagedir=E:/Boost/Boost_1.55.0_VC2013_X64 link=static runtime-link=shared address-model=64


--build-dir是临时文件路径。--stagedir是动态库输出目录。address-model=64指定使用x64​​架构​​。如果要编译x86的话把address-model去掉就行了。