Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532460
  • 博文数量: 129
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1888
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-20 11:09
文章分类

全部博文(129)

文章存档

2016年(1)

2015年(5)

2014年(64)

2013年(59)

我的朋友

分类: C/C++

2014-04-29 14:16:50

系统:win7
开发环境:visual studio 2010
boost版本:boost_1-46_1
目标:编译boost库,并添加到vs2010中以供使用。


实践是最好的办法。。学习C++,想试试线程,然后打算用boost库,结果boost库编译差点吓到我。。没看到比较完整的安装教程。。一直耽搁。今天动手。完成了。方法记录如下:
1.下载boost
从boost官网(  )上下载最新的boost版本,我下的是boost_1.46.1版本,解压到自定义目录,最终的目录结构是D:\boost_1_46_1

2.编译boost库
在D:\boost_1_46_1的目录下,有一个bootstrap.bat文件,直接双击运行。就会在同目录生成bjam.exe文件。

3.设定编译选项
修改user-config.jam (D:\boost_1_46_1\tools\build\v2\user-config.jam) 的MSVC configuration
# MSVC configuration
# Configure msvc (default version, searched for in standard locations and PATH).
# using msvc ;
在上面这段的下面直接添加如下的文字。
using msvc:10.0:: /wd4819 /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_SECURE_SCL=0 ;

如果开发环境为VS2008则msvc项应为 msvc:9.0
保存关闭。

4.开始编译
点击开始->所有程序->“Microsoft Visual Studio 2010”,指向“Visual Studio tools(工具)”,然后单击“Visual Studio 2010 command prompt(命令提示)” 使用cd切换到D:\boost_1_46_1目录。
然后输入如下的代码:

bjam --toolset=msvc-10.0 architecture=x86 instruction-set=i686 address-model=32 link=static  
variant=debug,release threading=multi runtime-link=shared --without-python --without-mpi  
--without-wave --without-graph --without-math --without-serialization stage 

解释一下命令的意思:
1.toolset:表示编译器工具,我安装的是VS2010,所以是msvc-10(如果你是VS2005,可以使用msvc-8.0 VS2008是msvc-9.0)
2.architecture:表示架构,也就是你的CPU架构,x86,x64,因为我安装的是win7 32位,所以使用了x86的架构
3.instruction-set:表示指令集,依然是8086指令集
4.address-model:表示地址长度为32位
5.link:表示生成动态/静态链接库,动态链接库是shared,静态链接库是static,一般都会编译成静态库,因为给出程序的时候打包boost的库会非常庞大
6.variant:表示生成的Debug或者release版本,一般情况下会两种版本都会编译出来的
7.threading:表示单/多线程编译,一般我们的程序都会用到多线程,所以选择了multi
8.runtime-link:表示动态/静态链接C/C++运行时库(C/C++ Runtime),我们选择了动态链接
9.without/with:表示不需要编译/需要编译哪些库,一些自己不用的库可以无需编译
10.stage/install:stage表示只生成库文件(DLL和Lib),install还会生成包含头文件的include目录,推荐使用stage,因为boost_1_49\boost中就是boost库完整的头文件,所以无需再拷贝一份出来。编译出来的库会放在stage文件夹中
这样一份完整的boost库就生成了,剩下就是直接使用到项目中了。

(现在看到为什么不推荐使用完全编译了吧,因为完全编译会编译出各种组合的所有情况,需要占用更多的空间和时间,所以建议各位朋友还是放弃了吧)

其实编译的具体命令都是可以自己写的。如果你需要编译所有。只需要使用下面的这行代码
b2 –toolset=msvc-10.0 –build-type=complete
就可以了。
不出问题的话。就开始编译了。。大约十分钟左右吧。就会完成了。

5.在vs中设置boost的运行环境
方法1:
  1. 打开vs,新建一个工程,并新建相应的cpp文件(只有在新建cpp文件后才会有对应的c/c++)。然后工程->属性->配置属性->C/C++ ->附加包含目录
填上
D:\boost_1_46_1;%(AdditionalIncludeDirectories)
这个是最终的结果,你也可以手动添加

 2. 在左侧选择链接器->附加库目录,填上
D:\boost_1_46_1\stage\lib;%(AdditionalLibraryDirectories)
就可以了,但是这种方法的缺点是对每个要使用boost的项目都要手动添加。

方法2:(推荐)
 在菜单栏选择视图->其他窗口->属性管理器.在对应的Debug|Win32和Release|Win32下的Microsoft.Cpp.Win32.user右键属性,在VC++目录中的包含目录和库目录选项上添加boost对应的目录,如下图所示。因为在属性管理器中的设置使全局设置,所以在新建的项目中就不用自己手动设置了。
  
   


6.测试boost环境是否配置成功:
在你新建的工程里输入如下的代码。运行成功就说明可以了

  1. #include <boost/thread/thread.hpp>
  2. #include <iostream>
  3.  
  4. void hello()
  5. {
  6.         std::cout <<
  7.         "Hello world, I'm a thread!"
  8.         << std::endl;
  9. }
  10.  
  11. int main(int argc, char* argv[])
  12. {
  13.         boost::thread thrd(&hello);
  14.         thrd.join();
  15.         return 0;
  16. }
参考:
 
    http://blog.csdn.net/misskissc/article/details/9793645


阅读(2578) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~