boost详解——编译


本文采用的boost库版本为boost_1_72_0。

1. 常用编译指令

  • link=static|shared:指boost生成的是动态库还是静态库,可以使用link=static,shared同时生成两种库。
    • static:静态库
    • shared:动态库
    • 默认值:static
  • runtime-link=static|shared:指boost链接系统运行时库时是静态还是动态链接。
    • static:静态库
    • shared:动态库
    • 默认值:shared
  • –with-:指定哪一个库需要编译,如–with-regex则只编译regex库,若不指定,则默认编译所有库。
  • –without-:指定不编译哪个库,如–without-regex,则除了regex库外,编译其他所有库。
  • threading=single|multi:指定是否生成多线程库
    • single:生成单线程库
    • multi:生成多线程库
    • 默认值:multi
  • toolset=:指定编译库的工具集,如:toolset=msvc-14.2
  • variant=debug|release:指定生成debug还是release版本的库
  • install:会同时生成lib和include文件
  • stage:只会生成lib文件
  • –prefix=:与install选项一起用,指定include和lib文件生成目录
  • –stagedir=:与stage选项一起用,指定lib文件生成目录
    • 默认值:"./stage"
  • -j:表示用多少线程进行编译,比如-j8表示使用8线程编译。
  • address-model=:表示生成32还是64位库,32表示生成32位,64表示生成64位,但是需要使用的编译器支持才行。
  • –build-dir=:指定生成中间文件位置。
  • –includedir=:指定生成的include文件位置。
  • –libdir=:指定生成的lib文件位置。

2. 生成库命名规则

以libboost_regex-vc142-mt-d-x64-1_72.lib为例:

  • lib:前缀,除了windows之外,每个boost库名字都以lib开始,在windows上,只有静态库使用lib前缀;动态库不使用。
  • boost_regex:库名称,所有boost库都以boost_开头。
  • -vc142:toolset标记:标识构建该库所用的toolset和版本信息。
  • -mt:多线程标记,标识该库启用了多线程支持。不支持多线程的库没有-mt。
  • -d:ABI标记:表明了影响库和其他编译代码的交互细节。对于每一种特性,向标记中添加一个字母。
    • s 静态链接C++标准库和编译器运行时库
    • g 链接时使用标准库和运行时库的调试版本
    • y 使用Python的特殊调试构建
    • d 生成库的调试版本
    • p 使用STLPort标准库而不是编译器提供的默认库
    • n 使用STLPort已被弃用的“native iostreams”
  • -x64:目标平台标记,x64表示64位平台,没有这一项时,表示32位平台。
  • -1_72:版本标记,完整的boost发布号,下划线代替点。
  • .lib:扩展名。

3. windows10+vs2019编译

3.1 msvc版本对应

  • vs2019——msvc-14.2
  • vs2017——msvc-14.1
  • vs2015——msvc-14.0
  • vs2013——msvc-12.0
  • vs2010——msvc-10.0

3.2 编译

  1. 从开始菜单打开x64_x86 Cross Tools Command Pro
    在这里插入图片描述
  2. 切换到boost源码目录。
  3. 执行.\bootstrap.bat vc142。在我的电脑上vc142必须加,不然会出现如下错误:
    在这里插入图片描述
    在bootstrap.bat中有如下指令:
    在这里插入图片描述
  4. 成功后,继续输入.\b2,后面可以跟上述编译指令,控制编译过程,如下
    .\b2 toolset=msvc-14.2 link=static runtime-link=static,shared --build-dir=build/x64 address-model=64 -j12 install --prefix=build/output
    
  5. 整个编译过程开始,等较长时间后成功即完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章