• MSVC编译Boost的几种链接方式


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

  • 相关阅读:
    ASP.NET学习笔记之VS操作使用技巧
    无线干扰的防止和消减要领总结
    小米蝈蝈 vs 巍
    struts2学习笔记一struts2标签学习
    魏飞
    Hibernate+Mysql在向数据库中保存 / 更新数据时设置编码格式
    程序员爱情 猿女友们,很幸福吗???
    人生
    外链?存储?这个好不好用,fileupyours,fileden,skydrive
    实现网页中增加刷新按钮、链接的方法 搜集
  • 原文地址:https://www.cnblogs.com/findumars/p/4781195.html
Copyright © 2020-2023  润新知