第一步:
在boost官网下载boost压缩包。
第二步:
解压缩压缩包,执行bootstrap.bat,生成b2.exe和bjam.exe(他们只是版本不同的产物,但是用法一致,bjam是之前版本的,b2 是最新的)。
第三步:
编译前提示:
命令:
b2.exe --help
b2.exe --show-libraries
编译命令参数:
stage/install:
stage 表示只生成库(dll 和 lib),install 还会生成包含头文件的 include 目录。推荐使用 stage,因为install 生成的 include 目录实际就是源码包下的 boost 目录,需要 include 的时候可以直接使用,不需要再次生成,这样可以节省大量的编译时间。
toolset:
指定编译器,可选的如 borland、gcc、msvc-14.0(VS2015)等。如果不指定,会自动搜索本地可用的编译器(可查看 ./project-config.jam 文件以确认)。
without/with:
选择不编译/编译哪些库(类似于黑名单/白名单)。–with-python(with前两个-,后面一个) 的含义是仅编译 python,其他的都不编译。反过来,如果用–without-python,意思就是除了 python, 其他的都编译。with/without 参数可以多次出现,以限定多个库。如果不设置 with/without 参数,默认全部编译,可能需要几个小时的时间!需要注意,编译 Boost.python 需要确保本地安装了 Python,并且 python 命令已加入环境变量。
stagedir/prefix:
stage 时使用 stagedir,install 时使用 prefix,表示编译生成文件的路径。推荐给不同的编译环境指定不同的目录,如
Visual Studio 2015 的 x86 应用对应的是 bin/lib32-msvc-14.0,x64 应用对应的是bin/lib64-msvc-14.0。如果都生成到一个目录下,将没有任何益处,徒增管理难度。如果使用了 install
参数,那么还将在上述指定的目录下生成 include 目录,用于保存头文件。
build-dir:
编译生成的中间文件的路径,默认是 Boost 根目录下的 bin.v2 目录,一般无需设置。
link:
指定生成动态链接库还是静态链接库,取值为 static|shared。生成静态链接库使用 static,生成动态链接库需使用 shared。如不指定,默认使用 static。静态库的缺点是占用空间比较大,优点是程序发布的时候无需附带 Boost 库的dll,比较整洁。推荐使用静态库的方式编译 Boost.python,这样发布程序的时候就不用 Boost 的 dll了,并且也多占用不了太多空间。
runtime-link:
指定运行时是动态还是静态链接其他库。同样有 shared 和 static 两种方式。如果不指定,默认是 shared,一般无需设置。
threading:
要编译的库是单线程还是多线程,可取值 single|multi。如果不指定,默认是 multi,一般无需设置。
variant:
debug|release,编译 debug 版本还是 release 版本。一般与最终发布的程序是 debug 还是 release
版相对应。如果不指定,默认两个都编译,一般无需设置。
address-model:
编译成 32 位版本还是 64 位版本,可取值 32|64。如果不指定,默认两个版本都编译。如果是编译
Boost.python,该参数就要与本地安装的 Python 位数相对应,否则编译会出错,因此最好设置一下。
编译例子:
只编译chrone:
b2.exe toolset=msvc-14.0 threading=multi link=static runtime-link=static address-model=64 --with-chrone
将会在stage/lib下生成:
libboost_chrono-vc140-mt-sgd-x64-1_71.lib
libboost_chrono-vc140-mt-s-x64-1_71.lib
编译所有库:
b2.exe stage toolset=msvc-14.0 threading=multi link=static runtime-link=static address-model=64
目录仍然为stage/lib
特别注意:
参数link和runtime-link总共有4种组合方式:
涉及到静态库共有两种,即runtime-link分别为static、shared。
其中又分别包含variant 分别为debug、release的情况。
使用静态库时,静态库的编译选型一定要与使用该静态库的编译选项一致。
编译时参数分别为:
link = static runtime-link = static variant = debug
link = static runtime-link = static variant = release
link = static runtime-link = shared variant = debug
link = static runtime-link = shared variant = release
参考资料:
boost库生成文件命名和编译
Boost库命名规则