boost的配置与使用(vs2010)

Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一。Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,是不折不扣的“准”标准库。Boost由于其对跨平台的强调,对标准C++的强调,与编写平台无关。大部分boost库功能的使用只需包括相应头文件即可,少数(如正则表达式库,文件系统库等)需要链接库。但Boost中也有很多是实验性质的东西,在实际的开发中实用需要谨慎。

boost库的开发使用了许多现代C++编程技术,内容涵盖字符串处理、正则表达式、容器与数据结构、并发编程、函数式编程泛型编程设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简洁、优雅、灵活和高效。

boost的官方下载地址:  http://sourceforge.net/projects/boost/files/boost/

vs2010配置boost编程环境

第一步:下载boost。我当初下载的是名字叫boost_1_55_0。

第二步:下载后我将该文件解压到了e:/boost目录下。

       第三步:开始->程序->MicrosoftVisual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),打开一个控制台。

       第四步:cd e:\boost\boost_1_55_0,切换当前操作目录到boost目录文件夹下,方便执行文件夹中的程序。

       第五步:执行bootstrap.bat程序,在命令行中输入:  bootstrap.bat  

       第六步:第五步执行完后会生成两个程序出来,分别是b2.exebjam.exe。

       第七步:修改user-config.jam文件

user-config.jam文件的位置在boost解压目录[我的解压目录位置为E:\boost_1_55_0\tools\build\v2]tools\build\v2目录下。

打开user-config.jam文件[可用记事本 ],添加以下内容[其它的内容在默认下都是被屏蔽了的 ]:

 

using msvc : 10.0 : : <compileflags>/wd4819  <compileflags>/D_CRT_SECURE_NO_DEPRECATE          <compileflags>/D_SCL_SECURE_NO_DEPRECATE  <compileflags>/D_SECURE_SCL=0 ;

<compileflags>间用空格隔开,以上的 ':'及‘::’的格式都是正确的。如果开发环境为VS2008则msvc项应为 msvc:9.0。

保存后关闭文件。

第八步:用bjam.exe编译生成库文件。

同样是在在Visual Studio 2010 command prompt命令窗口中执行以下命令

[[可先用命令 bjam–show-libraries   查看有哪些库是必须编译才能使用的 ]]

bjam stage --toolset=msvc-10.0 --without-python  --without-mpi --without-wave --without-graph --without-math  --without-serialization --stagedir="F:\boost_1_55_0\boost_1_55_0\bin\vc10" link=static runtime-link=shared threading=multi debug release

 当然了,以上命令讲不对像python,mpi,graph等库进行编译。

如果你想全部编译,可以使用以下命令:

b2--toolset=msvc-10.0 --build-type=complete stage或者(2)bjam.exe--toolset=msvc-10.0 --build-type=complete

如果开发环境是vs2008则对应的--toolset参数值为msvc-9.0。运行此命令后就可以看见在指定目录E:\boost\boost_1_55_0\boost_1_55_0下生成bin,bin.v2文件,然后随着编译,这两个文件里面的东西也越来越多。

如果是全部编译,将编译的库放在指定的目录,则可以这样子书写bjam命令:

bjam stage --toolset=msvc-10.0 --build-type=complete --stagedir="E:\boost\boost_1_55_0\boost_1_550\bin\vc10" link=static runtime-link=shared threading=multi debug release

在XP系统下,用VS2008编译完全后还有环境配置的提示。

 

bjam命令和各参数间及参数与参数间都以空格隔开。debug  release表示调试版和发布版皆被生成。

bjam使用的形式为:

bjam --参数1-模式1 --参数2-模式2参数3=模式3 …  debug release

 

参数前要加”--”,参数对应项如“—without-serialization” –without与serialization之间要加”-”,其它的参数需要设置成对应的模式用”=”。

bjam.exe部分参数解释如下:

stage/installstage指定boost C++库安装在名为stage的子目录下,可又--stagedir指定安装路径;install在系统范围内安装(windows下安装目录为C\Boost,而在linux中则是/usr/local),目标目录也可以由--prefix指出。

stage表示只生成库(dlllib),install还会生成包含头文件的include目录。【未经验证】

--toolset:指定C++的编译器[ VS2008对应--toolset=msvc-9.0,vs2010对应--toolset=msvc-10.0 ]

--build-type:创建何种方式的库。缺省情况下,该选项设为minimal,即只创建发布版。对于那些想用Visual Studio 或GCC 构建他们项目的调试版的开发者来说,可能是一个问题。因为这些编译器会自动尝试链接调试版的Boost C++ 库,这样就会给出一个错误信息。在这种情况下,应将--build-type  选项设为complete,以同时生成Boost C++ 库的调试版和发布版,当然,所需时间也会更长一些。

link:创建动态[  link=shared ]还是静态[link=static]的库.

runtime-link:指定C++运行时库是静态[ runtime-link=static ]链接还是动态[ runtime-link=shared ]链接

threading:单[  threading=single ]/多线程[  threading=multi ]编译。

without/with:选择不编译/编译哪些库。

 

其中没有安装的库比较多,如果我今后要用到这些没有安装的这些库,则重新进入VS2010的命令行安装即可.

这个过程执行时间比较长[不安装这么多的库还好,要是都安装的话时间就真的比较长了,感觉我的电脑都不止网上说的一个小时的,所以选择以后会用到什么库再安装的方式来使用bjam.exe 。不过配置较好的台式机花的时间就比较少了 ],命令窗口会出现大量的字符串。这个场景让我想起了大二开始搞的linux字符界面呀,在那个界面之下操作的的场景与此景相似,而且我觉得在命令行下的命令使用格式都差不多的。可以专门查一下bjam的用法。


完成上述步骤后,便可以对VS2010进行 boost库的具体配置了。

仿照ACE安装的模式,也为boost设置一个环境变量。然后在VS2010的项目中对应目录进行以下设置[这个过程如不清楚,则看ACEVS2010配置过程 ]。只需将boost下出现bin、boost等文件夹以上的boost目录添加至path路径中,设置的环境变量[BOOST ]值也是如此。

include目录:$(BOOST)

library 目录: $(BOOST)\bin\vc10\lib

 

如果是VS2008则配置步骤为:

打开VS2008项目,工具-->选项-->项目和解决方案-->VC++ 目录,然后在右上角(显示以下内容的目录)选择包含文件及库文件。

包含文件中添加一行:$(BOOST)

库文件中添加一行:$(BOOST)\bin\vc08\lib

创建一个工程,附加包含目录为:d:\boost_1_55_0;附加库目录为:d:\boost_1_55_0\stage\lib

如果是在2010环境下这步,在自己对建立项目-->右键选择“属性”-->VC++ Directories 中去填写对应路径

这两步我的配置的时候是:(1)E:\boost_1_55_0   (2)E:\boost_1_55_0\stage\lib


完成以上步骤就可以在vs2010中使用boost库了。测试代码如下:

#include<iostream>
#include <boost/regex.hpp>
using namespace std;
int main()
{
    boost::regex reg("\\d{3}([a-zA-Z]+).(\\d{2}|N/A)\\s\\1");
    std::string correct="123Hello N/A Hello";
    std::string incorrect="123Hello 12 hello";

    assert(boost::regex_match(correct,reg)==true);
    assert(boost::regex_match(incorrect,reg)==false);
    cout<<"Hello Boost !"<<endl;
}

 





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值