Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3298922
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: C/C++

2008-03-04 22:45:38

新项目准备用C++做,所以想趁机使用一下Boost.今天试着安装了一下.
首先下载Boost_1_34_1.zip和Boost-jam-3.1.15.zip前一个是boost主文件包,后一个是编译Boost库用的JAME工具.
现定义 %BOOST% 为Boost_1_34_1.zip的解压路径,%BOOST_BJAM%为Boost-jam-3.1.15.zip的解压路径.
打开%BOOST_BJAM%/Build.bat,修改其中的编译器路径.如:
if EXIST "%ProgramFiles%\Microsoft Visual Studio 8\VC\bin\VCVARS32.BAT" (
   set "BOOST_JAM_TOOLSET=vc8"
   set "BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio 8\VC\bin\VCVARS32.BAT"
   goto :eof)
setlocal & endlocal
修改为(VS2005):
if EXIST "D:\Program Files\Microsoft Visual Studio 8\VC\bin\VCVARS32.BAT" (
   set "BOOST_JAM_TOOLSET=vc8"
   set "BOOST_JAM_TOOLSET_ROOT=D:\Program Files\\Microsoft Visual Studio 8\VC\bin\VCVARS32.BAT"
   goto :eof)
setlocal & endlocal
或者(VS98):
if EXIST "C:\Program Files\\Microsoft Visual Studio\VC\bin\VCVARS32.BAT" (
   set "BOOST_JAM_TOOLSET=vc8"
   set "BOOST_JAM_TOOLSET_ROOT=C:\Program Files\\Microsoft Visual Studio\VC\bin\VCVARS32.BAT"
   goto :eof)
setlocal & endlocal
保存后执行build.bat.完成后会在%BOOST_BJAM%\bin.ntx86目录下面生成一个bjam.exe的文件,一会用它来编译生成boost的库文件.
把bjam.exe拷贝到%BOOST%目录下,并新建一个Build.bat文件.编辑Build.bat
call "D:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
bjam -sBOOST_ROOT=. -sTOOLS=vc-8_0  --build-dir=. --with-regex --toolset=msvc stage
这样可以在%BOOST%\stage\lib目录下生成所需的库文件.我的感觉是添加"--with"参数,一个库一个库的编译(也许可以同时添加多个库我没有试)会快点.一般用不到Python、test、thread(Boost的thread库对Windows平台的支持并不好,因为他是基于Posix线程的),而最占时间的应该是Python库了.
需要编译的Boost库一共有12个,都是与平台相关的库.分别为:

Date_time
Test
Python
Filesystem
Thread
Wave
Program_options
Regex
Serialization
Signals
Graph
Iostreams
编译好之后,就可以在VS2005的"工具"-->"选项",选择"项目和解决方案"-->"vc++ 目录"中将%BOOST%\lib和%BOOST%\stage\lib添加"库文件"中,将"%BOOST%"添加到"包含文件"中.
在VC98中,选择"Tools” ->"Options” ->"Diretories” ->"Show Diretories for”,同样将以上文件夹分别添加到"Include Files"和 "Library Files"中.
最后测试一下是否安装成功:
 

#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;
using namespace boost;
regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*);");
int main(int argc, char* argv[])
...{
     std::string in;
     cmatch what;
     cout << "enter test string" << endl;
     getline(cin,in);
     if(regex_match(in.c_str(), what, expression))
     ...{
           for(int i=0;i           cout<<"str :"<     }
     else
     ...{
        cout<<"Error Input"<     }
        return 0;
}输入:select name from database;
输出:str:select name from table;
   str:name
   str:table
这样就完成了.
阅读(1435) | 评论(0) | 转发(0) |
0

上一篇:插件

下一篇:Linux打印用户列表

给主人留下些什么吧!~~