折腾了好几个小时,终于理清了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去掉就行了。

http://blog.csdn.net/aqtata/article/details/29583259

MSVC编译Boost的几种链接方式的更多相关文章

  1. 使用MinGW编译Boost,MSVC编译Boost的几种链接方式 good

    1.下载Boost(http://www.boost.org) 我目前用的是1.61.0版本 2.将MinGW下的bin目录完整路径设置到系统环境变量Path中,保证cmd命令行能找到gcc,g++等 ...

  2. VMware三种链接方式

    VMware三种链接方式 第一种:桥接Bridged 如其的说明:connected directly to the physical networkà直接连接到物理网络.如果是通过路由器连接出来的D ...

  3. Html CSS的三种链接方式

    感谢原文:https://blog.csdn.net/abc5382334/article/details/24260817 感谢原文:https://blog.csdn.net/jiaqingge/ ...

  4. VS2010编译Boost 1.57 静态链接库

    http://www.cnblogs.com/cuish/p/4175491.html 0.前提 Boost库版本 1.57.0 下载地址 http://www.boost.org/users/his ...

  5. SQL语句的执行计划(oracle表的三种链接方式)

    SQL语句我们写完之后,就是分析其优化,这就要求我们了解到底数据是怎么存储. 首先我们需要了解,表链接的几种方式 nested loop join sort merge join hash join ...

  6. Oracle三种链接方式的区别

    1 nested loops join--我们用设置statistics_level=all的方式来观察如下表连接语句的执行计划: --T2表被访问100次(驱动表访问1次,被驱动表访问100次)-- ...

  7. 浅谈boost.variant的几种访问方式

    前言 variant类型在C++14并没有加入,在cppreference网站上可以看到该类型将会在C++17加入,若想在不支持C++17的编译器上使用variant类型,我们可以通过boost的va ...

  8. C++ 系列:编译 boost

    Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...

  9. VS2008编译boost库

    一.下载首先从boost官方主页http://www.boost.org/下载最新版boost安装包,我用的版本是boost.1.49.0二.新建文件夹 如果是使用下载的安装包,那么请将boost安装 ...

随机推荐

  1. 8.1 Android灯光系统_总体框架

    1.框架 APP(java语言实现) ------------------------------- JNI(c++语言实现)     向上提供Java执行c函数的接口  向下访问HAL ------ ...

  2. [array] leetCode-1-Two Sum-Easy

    leetCode-1-Two Sum-Easy descrition Given an array of integers, return indices of the two numbers suc ...

  3. FastSocket学习笔记~RPC的思想,面向对象的灵活

    首先非常感谢这位来自新浪的老兄,它开发的这个FastSocket非常不错,先不说性能如何,单说它的使用方式和理念上就很让人赞口,从宏观上看,它更像是一种远程过程的调用RPC,即服务器公开一些命令,供客 ...

  4. 简要分析unity3d中剪不断理还乱的yield

    在学习unity3d的时候非常easy看到以下这个样例: void Start () { StartCoroutine(Destroy()); } IEnumerator Destroy(){ yie ...

  5. Win或Linux中编译安装软件的命令解析: configure; make; make install

    原文地址:http://www.cnblogs.com/Jerry-Chou/archive/2010/12/18/1909843.html 翻译一篇文章,我最早从这篇文章中了解到为什么Linux平台 ...

  6. GitHub的repository的相关操作

    原文地址 https://www.jianshu.com/p/038e8ba10e45 1.准备工作 a.有自己的GitHub账号(https://github.com/)b.在自己本地有安装git软 ...

  7. 那些移动端web踩过的坑2

    原文链接:https://geniuspeng.github.io/2018/04/26/mobile-issues2/ 坑是无穷无尽的,嗯-长江后坑推前坑~~ 关于音频自动播放 H5的audio标签 ...

  8. [GraphQL] Deploy a GraphQL dev playground with graphql-up

    In this lesson we'll use a simple GraphQL IDL schema to deploy and explore a fully functional GraphQ ...

  9. 一个自己主动依据xcode中的objective-c代码生成类关系图的神器

    https://github.com/kimsungwhee/KSHObjcUML 安装方法: 1.下载项目 2.执行 3.会又一次开启一个新的xcode 4.选择一个项目,点击 Objc-UML 会 ...

  10. 设置UIButton的文字显示位置、字体的大小、字体的颜色

    btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlS ...