vs2015编译boost,

  vs2015编译boost,

  VS2010 Boost编译和安装(原版)-云上的小飞象CG-博客公园

  VS2010 Boost编译安装(原创)“未经深入学习就简单转载他人,简直是对他人的不负责任!对不起浪费了一个多小时编这篇文章的朋友们!”

  1.下载安装包boost 1_46_0

  http://www.boost.org/users/news/version_1_46_0

  选择要下载的windows或unix版本。

  2.解压缩到D:\boost目录

  3.编译bjam

  (1)从vs2010的工具菜单进入命令提示符窗口(单击开始按钮,指向所有程序,指向Microsoft Visual Studio 2010,指向Visual Studio工具,然后单击Visual Studio 2010命令提示符)。

  (2) bootstrap.bat将从2)cd执行到D:\boost\boost_1_46_0,然后在D:\boost\boost_1_46_0下生成bjam.exe

  4.设置编译环境(如果要删除编译警告,需要修改它)

  修改user-config . jam(D:\ boost \ boost _ 1 _ 46 _ 0 \ tools \ build \ v2 \ user-config . jam)的MSVC配置

  # MSVC配置

  #配置msvc(默认版本,在标准位置和路径中搜索)。

  #使用msvc

  使用msvc:10.0:compile flags/wd 4819 compile flags/D _ CRT _ SECURE _ NO _ DEPRECATE compile flags/D _ SCL _ SECURE _ NO _ DEPRECATE compile flags/D _ SECURE _ SCL=0;

  5.将目录cd到D:\boost\boost_1_46_0\并执行它。

  (1)编译boost库

  bjamstage-without-python-toolset=msvc-10.0-build-type=complete-stage dir= d:\ boost \ boost _ 1 _ 46 _ 0 \ bin \ vc10 (这一步需要等待很长时间,大概一个小时左右.)

  每个参数的含义详细解释如下:

  Stage/install: stage表示只生成库(dll和lib),install也会生成包含头文件的include目录。

  工具集:指定编译器,如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)等。

  不带/带:选择不编译/编译哪些库。

  Stagedir/prefix: stagedir用于stage,prefix用于install,表示编译文件的路径。建议为不同的ide指定不同的目录。比如VS2010对应D:\boost\boost_1_46_0\bin\vc10,否则会生成在一个目录下,很难管理。

  Build-dir:编译生成的中间文件的路径。我没有在这里使用这个。默认在根目录下(D:\boost\boost_1_46_0),目录名为bin.v2(删除)。编译完成后,可以删除这个目录(没用),所以不需要设置。

  链接:生成动态链接库/静态链接库。动态链接库需要在共享模式下生成,静态链接库需要在静态模式下生成。一般来说,boost库都是静态编译的,因为最终发布者会觉得boost dll很笨重。

  运行时链接:动态/静态链接的C/C运行时库。还有两种方式,共享和静态,让runtime-link和link产生四种组合,每个人可以根据自己的需要选择编译。一般如果link只选择static,只需要编译两个组合,即link=static runtime-link=shared和link=static runtime-link=static。

  线程:单线程/多线程编译。一般写多线程程序,当然要指定多模式;如果需要编写单线程程序,还需要编译单线程库,可以在单模式下使用。

  调试/发布:编译调试/发布版本。通常,程序的调试版本对应于库的调试版本,所以两者都被编译。

  运行后(弹出输入提示)

  6.设置vs2010环境。(注意:在2010环境下的这一步,填写项目中相应的路径——右键属性——VC目录)

  修改环境变量:$(BOOST): D:\boost\boost_1_46_0

  工具-选项-项目和解决方案- VC目录

  将$(BOOST)\bin\vc10\lib添加到库文件中。

  添加$(BOOST)以包含文件。

  使用示例:

  #包含boost\thread.hpp

  此时,在不包含库文件的情况下,boost的自动链接机制会自动帮助我们包含相应的静态库。也就是说boost默认是静态链接的,所以最好把我们的工程属性设为多线程(Debug)。如果要使用dll动态链接,需要事先定义一个宏:

  #定义BOOST_ALL_DYN_LINK

  同样,boost也会默认为我们包含相应的lib。如果你不想使用boost提供的自动链接机制,或者对它的自动链接感觉不舒服(其实不用你操心),可以提前定义宏:

  #define BOOST_ALL_NO_LIB

  然后使用以下方法进行链接:

  # pragma注释(lib, boost _ thread-vc100-mt-1 _ 46.lib )或

  #pragma注释(lib, boost_thread-vc100-mt.lib )

  这两个lib其实是一样的。真不明白为什么boost编译的时候每个库都要做一个副本。是因为后者升级了boost版本就不用改代码了吗?还有另一个有用的宏:

  #定义升压库诊断

  它允许VC在编译时在输出窗口中输出程序链接了哪些boost库以及链接顺序。

  关于boost的自动链接机制,可以详细看看boost\config\auto_link.hpp中的代码,很容易读懂,值得学习。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: