VC98 和 VC2005下的Boost编译和安装

来源:互联网 发布:chrome js获取shift键 编辑:程序博客网 时间:2024/05/22 03:20
导读:
  新项目准备用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=0i  
  
  cout<<"str :"<  
  
  }
  
  else
  
  
  
  ...{
  
  
  cout<<"Error Input"<  
  
  }
  
  return 0
  
  }
  输入:select name from database;
  输出:str:select name from table;
  str:name
  str:table
  这样就完成了.
  Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1860151
  [收藏到我的网摘] [发送Trackback] LEO发表于 2007年10月31日 21:31:00

本文转自
http://blog.csdn.net/LEO_TALENT/archive/2007/10/31/1860151.aspx