1. https://www.boost.org 下载boost源码 boost_1_70_0.zip解压。

2.准备编译前的配置,打开vs2017 x86 CMD工具,进入目录boost_1_70_0,执行bootstrap.bat,等待初始化完毕,会生成b2.exe和bjam.exe两个程序,所有编译工作都是通过b2.exe或bjam.exe完成,可以通过help查看参数,b2.exe方式比较新。
指令格式大概如下:b2 install --toolset=msvc-14.1 --prefix="D:ScanSourcedownloadBoostvc141" link=static runtime-link=shared threading=multi debug release
(1)stage/install:
stage表示只生成库(dll和lib),install还会生成包含头文件的include目录和CMake文件夹。

(2)toolset:
指定编译器,可选的如minGW、msvc等。
vs2017 : msvc-14.1,vs2015 : msvc-14.0,

(3)without/with:
选择不编译/编译哪些库。因为python、mpi等库我都用不着,所以排除之。还有wave、graph、math、regex、test、program_options、serialization、signals这几个库编出的静态lib都非常大,所以不需要的也可以without掉。这可以根据各人需要进行选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www.python.org/下载安装。

查看boost包含库的命令是b2 --show-libraries

(4)stagedir/prefix:stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。推荐给不同的IDE指定不同的目录,32位、64位要区分开,不过IDE也有区分。
(5)build-dir:
编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。

(6)link:
生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。

(7)runtime-link:
动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。

(8)architecture
表示架构,也就是你的CPU架构,所以是x86

(9)address-model
地址长度,32表示编译32位的库文件,64表示编译64位的库文件

(8)threading:
单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。

(9)debug/release:
编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。编译boost
编译boost的命令比较复杂,尤其是 link, runtime-link 这两个选项的功能分不太清楚,他们共有4种相互组合,这些相互组合各有什么含义呢?
所以首先做个实验,仅编译date_time库,观察一下这两个选项的作用。第一种;
b2 stage --toolset=msvc-12.0 --with-date_time --stagedir="E:eCodeboost_1_56_0binvc12" link=static runtime-link=static threading=multi debug release
第二种;
b2 stage --toolset=msvc-12.0 --with-date_time --stagedir="E:eCodeboost_1_56_0binvc12" link=static runtime-link=shared threading=multi debug release
第三种;
b2 stage --toolset=msvc-12.0 --with-date_time --stagedir="E:eCodeboost_1_56_0binvc12" link=shared runtime-link=shared threading=multi debug release
第四种:
b2 stage --toolset=msvc-12.0 --with-date_time --stagedir="E:eCodeboost_1_56_0binvc12" link=shared runtime-link=static threading=multi debug release
第五种:
b2 stage --toolset=msvc-12.0 --with-date_time --stagedir="E:eCodeboost_1_56_0binvc12_2" (默认,为避免将前面的结果覆盖,配置另一目录vc12_2存放)
第五种:
b2 stage --toolset=msvc-12.0 --with-date_time --stagedir="E:eCodeboost_1_56_0binvc12_2" --build-type=complete(为避免将前面的结果覆盖,配置另一目录vc12_3存放)

说明:

(1)--build-type=complete时link,runtime-link3种组合下debug, release的多线程版本都生成出来了除此之外还生成了link=static,runtime-link=static的debug, release的单线程版本

(2)Boost库的使用方式link决定了生成的库的格式:lib(静态链接库-static), dll(动态链接库-share)

  当link是static时,生成的静态库: libboost_*****.lib

  当link是share时,生成的动态链接库:boost_****.dll

(3)Boost库的编译中runtime-link,决定了生成库与C/C++库的连接方式

  当runtime-link是static使: 生成的库文件名有 s

  当runtime-link是share使: 生成的库文件名没有s

(4)link以及与runtime-link缺省的设置是:

    link是静态的(便于整合到应用中,避免单独移动boost的相关动态连接库)

    runtime-link是share的,这样可以动态调用c/C++运行时库,方便

(5)degug版本的库名称: 含有gd

  release版本中的库名称;不含有gd

(6)threading,设置mutl 多线程的库,则库名称包含:mutl

  如果是单线程,则没有mutl

(7)我们还可以分析一下 boost 库的命名特点

  • 以“lib”开头的是“link=static”版本(静态链接库版本,没有dll),而直接以“boost”开头的是“link=shared”版本(动态链接库版本,包含lib和dll)。
  • 所有的库都含有"boost"前缀。
  • 紧随其后的是boost库名称(比如date_time库)。
  • 然后是编译器的版本,与库名称之间以"-"而不是下划线"_"分隔(比如 -vc120)。
  • 有“mt”的为“threading=multi”版本,没有的则是“threading=single”版本。
  • 有“s”的为“runtime-link=static”版本,没有的则是“runtime-link=shared”版本。
  • 有“gd”的为debug版本,没有的则是release版本。
  • 所有的库都含有boost库的版本号结尾(比如1_56,其中的"."以下划线"_"代替)

在IDE中关联Boost库,我的项目都是采用CMake方式创建的
QTCreator 中点击左侧的项目菜单,在CMake参数表格中添加
Boost_INCLUDE_DiR 设置为 "boost_1_70_0includeboost-170"
Boost_DIR 设置成 "boost_1_70_0libcmakeBoost-1.70.0"
点击 apply Configuration Changes,编译参数。

MSVC 中,先使用CMake-GUI工具打开CMake项目,设置参数同样,
点击Configure,编译参数。

CMakeLists.txt 包括

find_package(Boost 1.70.0 REQUIRED)
if(Boost_FOUND)set(Boost_LIBRARY_DIRS D:/ScanSource/download/Boost/vc141_64/lib)message(Boost_INCLUDE_DIRS " ${Boost_INCLUDE_DIRS}")message(Boost_LIBRARY_DIRS " ${Boost_LIBRARY_DIRS}")
endif()include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})

注意事项
1、CMake网站有引用Boost的约定参数说明,引用过程中出错可以参考文档说明。
2、注意使用的Boost的版本,路径是否与项目一致,出现错误一般都是没有找到头文件路径、没有找到Lib路径、使用的32位与64位版本错误,使用的动态库、静态库版本错误。
通过生成的文件名可以区分,了解“mt”“s”"gd" ,“lib”“dll”的意思,如果一切顺利就可以放心使用了。

如果只是需要Release版本有一个Windows Binaries的下载链接,解压就好了。。。。https://dl.bintray.com/boostorg/release/1.70.0/binaries/

boost安装_Boost编译与使用相关推荐

  1. boost安装_编译安装Mysql详细步骤

    1.编译安装mysql 首先关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld && setenforce 0 1.清 ...

  2. Linux下boost库的编译、安装详解

    1.下载源文件 去官网下载:http://www.boost.org/ 这里下载最新版本 wget https://dl.bintray.com/boostorg/release/1.64.0/sou ...

  3. Boost学习之Boost下载、安装、编译

    写在前面 近期项目,涉及到Boost库的编译和更迭,编译以及编译参数等如何设置,一时间让我很头疼,因此决定趁周末,总结一下编译等流程, 方便日后复习. 文章目录 1.Boost下载 2.安装 3.编译 ...

  4. boost库linux编译安装

    0.下载 1.解压boost_1_49_0.tar.g然后放到/opt/ 2. 进入解压后的文件夹 cd /opt/boost_1_49_0 3.将boost安装配置在/boost/prefix目录下 ...

  5. boost安装(windows、linux)

    boost安装(windows.linux) boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库. boost安装(vs2017+boost_1_64_0+win10) 1.到 ...

  6. Yade 安装时编译错误求问

    Yade 安装时编译错误求问 多版本.多次安装均在76%时产生错误,错误代码如下: 系统是UBUNTU16.04 如有大佬赐教,小弟不胜感激 hty@hty-System-Product-Name:~ ...

  7. eclipse安装反编译插件(附jad下载)

    eclipse安装反编译插件(附jad下载) 博客分类: eclipse 一.eclipse反编译插件Jadclipse jadclips插件网站:    http://jadclipse.sourc ...

  8. 鲲鹏服务器设置ip文件,IPFS在鲲鹏云服务器中的安装与编译过程记录

    IPFS星际文件系统是一个旨在创建持久且分布式存储和共享文件的网络传输协议.它是一种内容可寻址的对等超媒体分发协议.在IPFS网络中的节点将构成一个分布式文件系统.它综合了几十年来学术界和开源领域成功 ...

  9. caffe安装,编译(包括CUDA和cuDNN的安装),并训练,测试自己的数据(caffe使用教程)

    caffe是一个非常清晰且高效的深度学习框架,目前有着不少的用户,也渐渐的形成了自己的社区,社区上可以讨论相关的问题. 我从开始看深度学习的相关内容到能够用caffe训练测试自己的数据,看了不少网站, ...

  10. SpringCloud(第 057 篇)CentOS7 安装 maven 编译工具

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 057 篇)CentOS7 安装 maven 编译工具 一.大致介绍 1.maven 相信大家一点 ...

最新文章

  1. 一个新游戏的思路;大家来说说看,觉得好的话,我做成游戏
  2. html div float center,跨浏览器实现float:center
  3. java安装路径_java环境变量和查看安装路径
  4. 基于HTML5的WebGL实现的2D3D迷宫小游戏
  5. JSF 中使用自定义Navigation
  6. soa---java 多线程的---锁
  7. system.out输出到文件上
  8. 最详细的制作正式版10.11 OS X El Capitan 安装U盘的方法
  9. python 有限元分析_用python实现简单的有限元方法(一)
  10. python开源代码题库管理_GitHub - gnu-xiaosong/Qu_system: 一款开源免费的题库系统程序,高效,安全,功能强大...
  11. linux 修改ftp默认端口号,在linux中添加ftp用户,以及修改FTP默认端口号
  12. 百度、阿里、美团、头条…论剑AI,这里有开发者想知道的未来
  13. 上twitter_如何在Twitter上对某人静音
  14. 光荣使命微信版服务器,腾讯光荣使命手游微信可以和QQ一起玩么 微信QQ帐号数据互通么...
  15. 不属于计算机完成科学特点的是,2019年网络教育统考《计算机应用基础》试卷版练习题2...
  16. 2019年肖秀荣命题人精讲精练
  17. 基于正则表达式(python)对东方财富网上证指数吧爬虫实例
  18. 让你自己制作的木马和病毒用360安全卫士杀不出。加壳,免杀,加花,捆绑,压缩。
  19. 组合数(字典序排列)
  20. 记github学生认证

热门文章

  1. 日常邮件用语(一)网摘学习
  2. 未能创建可接受的游标。
  3. GoogleTest测试框架介绍(二)
  4. python数据持久存储:pickle模块的基本使用
  5. LeetCode 776. Split BST
  6. 前端------Codepen 用起来非常舒服的工具
  7. 【算法】普通方法和筛选法求素数
  8. POJ读书笔记2.1 —— 鸡兔笼带
  9. cordova android ios
  10. TFS集群间数据迁移任务总结