vs2008安装boost库

首先我在晚上找到了很多的说明:我先一一罗列在下

 

*********************************************************************************

一。下载

boost库2008年3月底发布了1.35.0版本,包括了12个新的库和若干对于新库的修正。请参见http://www.boost.org/users/news/version_1_35_0 来 获取详细的更新信息。

最大的喜讯就是提供了对于Visual Studio 2008编译器的支持(1.34也可以,但是需要手工修改)。

下载地址:

http://www.boost.org/users/download/

boost JAM可以不用下载,源代码已经包括在boost库中,可以直接来编译出来。

二。准备工作

编译boost库之前,需要做一些准备工作。下载一些Open Source的包,来支持boost特定库的需要。

1. ICU

ICU提供了unicode和国际化支持,目前的版本是3.8.1。ICU的主页是http://www.icu-project.org/

(1). 下载

可以从http://www.icu-project.org/download/3.8.html 下 载源代码版本和使用VS2005编译的版本。推荐下载源代码版本自己进行编译,以避免依赖于VS2005的运行时库。

(2). 编译

ICU的编译比较简单,打开ICU源代码目录下的source/allinone/allinone.sln,需要转换到VS2008格式,直接转 换即可。然后,选择release,Rebuild Solution即可。

(3). 测试

将编译出来的bin目录加入到系统的PATH目录中去。然后,重新打开allinone.sln工程。

需要通过测试的项目

  1. cintltst项目
  2. intltest项目
  3. iotest

分别设置成启动项目,运行即可。

2. bzip

bzip的主页是 http://www.bzip.org/ ,从http://www.bzip.org/downloads.html 下 面下载源代码包即可,boost直接使用源代码来进行编译。

3. zlib

zlib的主页是http://www.zlib.net/ ,从该网页下 面下载源代码包即可,boost直接使用源代码来进行编译。

4. python

python的主页是http://www.python.org/ , 下载python的2.5.2版本,安装即可。boost默认是会编译python,并且会自动寻找python的安装目录。

三。编译

到开始菜单的VS2008菜单项下,启动Visual Studio 2008 Command Prompt,以下编译步骤均假定直接在该工具下进行编译。

1. 编译jam

到tools/jam目录下面运行build_dist.bat,编译好的放在tools/jam/stage/boost-jam- 3.1.16-1-ntx86目录下,将bjam.exe复制到boost的根目录。

2. 编译boost

鉴于参考2下使用build-type有问题,可以使用以下命令来分别编译dll版本和lib版本。下面是一个示例脚本的例子,其中的目录需要替 换:

1 REM used with iostream library

2 REM boost_1_35_0/libs/iostreams/doc/installation.html

3

4 set BZIP2_SOURCE="E:/library/bzip2-1.0.4"

5 set ZLIB_SOURCE="E:/library/zlib123"

6

7 REM used with regex library with unicode support

8 set ICU_PATH="E:/library/icu"

9

10 REM DLL版本

11 bjam --toolset=msvc --stagedir=./lib_x86 --builddir=./ address-model=32 link=shared runtime-link=shared threading=multi stage debug release

12

13 REM lib版本

14 bjam --toolset=msvc --stagedir=./lib_x86 --builddir=./ address-model=32 link=static runtime-link=shared threading=multi stage debug release

15

编译好的文件放置在boost根目录的lib_x86/lib目录下,在boost根目录下的bin.v2目录是中间文件,编译后删除即可。

如果需要去掉编译过程中的一些warning,可以在tools/build/v2的user-config.jam文件中加入以下这一行:

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

四。参考文章

1. vs2005下安装boost

http://hi.baidu.com/vivid217/blog/item/8e484eafd3b52ff8faed5063.html

2. boost1.35.0编译日志

http://www.cppblog.com/chemz/archive/2008/03/31/45822.html

 

 

 

*********************************************************************************

网上有很多安装方法,以下是我成功安装的步骤

1.下载boost_1_34_1压缩文件,解压缩到d:/boost_1_34_1/目录下

2.编译bjam

从vs2005的工具菜单进入命令提示窗口(一定要从这进),cd到d:/boost_1_34_1/tools/jam/src下执行 build.bat,会在d:/boost_1_34_1/tools/jam/src/bin.ntx86/產生bjam.exe,將bjam.exe 複製到d:/boost_1_34_1/下。

3.设定编译环境

修改user-config.jam (d:/boost_1_34_1/tools/build/v2/user-config.jam) 的MSVC configuration

#     MSVC configuration

#     Configure msvc (default version
, searched in standard location
#     and PATH).
#     using msvc
;
using msvc : 8.0 : : <compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE <compileflags>/D_SCL_SECURE_NO_DEPRECATE <compileflags>/D_SECURE_SCL = 0 ;

4.编译boost

將目錄移至d:/boost_1_34_1/下執行

參數說明
--without-python 表示不使用 python
--toolset : 所使用compiler,Visual Studio 2005為msvc-8.0
--prefix:指定編譯後library的安裝目錄
这一步要花很长时间(大约50分钟)
5.设定vs2005环境
Tools -> Options -> Projects and Solutions -> VC++ Directories
在Library files加上d:/boost/lib
在Include files加上d:/boost/include/boost-1_34_1
6.测试安装是否成功
#include <iostream>
#include <string>
#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string_regex.hpp>
using namespace std;
using namespace boost;
int main() {
    string s = "    Hello boost!! ";
    trim(s);
    cout << s << endl;
    getchar();
       std::string regstr = "a+";
      boost::regex expression(regstr);
      std::string testString = "aaa";
      // 匹配至少一个a
      if( boost::regex_match(testString, expression) )
      {
          std::cout<< "Match" << std::endl;
      }
      else
      {
          std::cout<< "Not Match" << std::endl;
      }
}

 

输出结果:
成功了!~~




*********************************************************************************

VS2008中编译Boost 1.38

一、下载 Boost 首先,我们到 http://www.boost.org 去下载 boost1.38 的代码包。得到一个压缩包 boost_1_38_0.zip ,你也可以选择下载其它格式的。
然后我们把它解压出来,我把它解压在 D 盘根目录下面:

二、获取编译工具 首先,我们需要到 bjam.exe 这是一个用于编译的工具。
接 下来我将会在 Visual Studio 2008 SP1 简体中文专业版中编译 Boost1.38 。我们去开始菜单,使用管理员身份运行 Visual Studio 2008 命令提示 ( Vista 请无视 )
然后我们通过 cd DOS 指令 进入到 :
Setting environment for using Microsoft Visual Studio 2008 x86 tools.

C:/Windows/system32>d:

D:/>cd boost_1_38_0

D:/boost_1_38_0>cd tools

D:/boost_1_38_0/tools>cd jam

D:/boost_1_38_0/tools/jam>cd src

D:/boost_1_38_0/tools/jam/src>
然后我们在这个 src 目录下面执行 build.bat:
D:/boost_1_38_0/tools/jam/src>build.bat
然后我们稍等一小会儿等待系统自动为我们生成编译工具。
生成完毕之后 src 目录下会出现一个 bin.ntx86 目录。进入这个目录会看见 bjam.exe
我们把这个 bjam.exe 拷贝到 boost 1.38 的根目录即我的 D:/boost_1_38_0
同上面的方法打开 Visual Studio 2008 命令提示,进入 D:/boost_1_38_0 。通过如下命令我们就可以查看当前版本的 Boost 的哪些组件需要编译了,因为 Boost 大部分组件都是以模板的形式存在的,不需要编译 :
D:/boost_1_38_0>bjam --show-libraries
The following libraries require building:

- date_time


- filesystem


- function_types


- graph


- iostreams


- math


- mpi


- program_options


- python


- regex


- serialization


- signals


- system


- test


- thread

- wave

三、编译 Boost1.38
我们再去 D 盘根目录创建一个我们的目标安装文件夹: D:/BoostLib 1_38
接下来使用默认的方式将 Boost1.38 完整编译到目标文件夹:
D:/boost_1_38_0>bjam install --prefix="D:/BoostLib 1_38" debug
剩下的参数都用默认的了。敲下回车,好了,开始耐心等待编译完成吧。在此之前请确认您的 D 盘的剩余空间,要完整编译需要大约 3G 的剩余空间,主要是会生成很多临时文件,编译连接完之后我们 可以删除掉的。曾经在网上看到说需要 12G 的空间,编译需要好几个小时,可能是现在不一样了吧,呵呵,电脑配置越来越好了。而且整个编译过程也需要一定的时间,编译 Debug 版本大约需要 40-80 分钟不等, Release 也差不多,根据不同的机器配置会有所不同,当然配 置越好越快啦。

编译的过程中会出现很多的 Warning ,你可以无视它们,基本上用于学习的目的,你很难很因为这些 Warning 而使得程序挂掉。
warning: No toolsets are configured.
warning: Configuring default toolset "msvc".
//
这里由于我们 没有选择编译器,所以这里默认选择了 VC ,由于我们是在 Visual Studio 2008 的命令提示下面,因此自动选择了 VC9 VC2005 也是同样的道理,我们选择 VC2005 的命令提示符就可以了。

warning: If the default is wrong, your build may not work correctly.
warning: Use the "toolset=xxxxx" option to override our guess.
warning: For more configuration options, please consult
编译的过程中会自动的帮你 Copy 一些诸如模板头文件等到目标文件夹去:
这个 Copy 过 程大约需要三分钟。完成之后便开始编译:
期间会有 一些警告,这些都可以无视。开始编译之后会在 lib 文件夹中出现相应的 lib dll 文件, 并且由于时间的推移会越来越多,这至少说明您的编译过程正在进行中。而且在编译的过程中还会发生 COPY 行为。
大家可以看看 Boost 生成的这些 Lib 文 件,比如 boost_regex-vc90-mt-gd-1_38.lib 。它的命名很考究的。
boost 代表这是 boost 库的组件
regex 代表这个是正则表达式的库
VC90 代表它是什么编译器版本
mt 代表它支持多线程 / Multithreads
gd 代表这是 debug 版本
1_38 代表了 Boost 的版本号
是不是很有艺术感呢 ?
另外还有一些这样的 Lib 文件,比如 libboost_iostreams-vc90-mt-gd-1_38.lib 。它以 libboost 开头,这表示这些 lib 是静态库文件,属于静态连接的库文件。它们没有对应的 dll 文件。同时您也可以注意到它们都比只具备索引功能的 lib 大得多。跟动态库版本有啥区别不用我解释了吧?
O( _ )O~
Debug 版本编译完我生成了 107 个文件,你有多少个呢?

好了,接下来我们使用类似的步骤来编译 Release 版本的 Boost
Release 版本的 Lib Dll 的命名和 Debug 版本的差别就在于没有 gd ,比如: boost_math_c99f-vc90-mt-1_38.lib
在等待了和编译 Debug 差不多的时间之后,我们的 Boost 就成功编译了。
为了符合我们通常 SDK 的习惯,我们把 D:/BoostLib 1_38/include/boost-1_38/ 下面的 boost 目录全部拷贝到 include 目录下面,然后再把 boost-1_38 这个空的文件夹删除。
现在我们的所有头文件都在 include 文件夹下面了,保留 boost 文件夹只是为了符合 boost 的习惯;所有的 lib dll 都位于 lib 文件夹下面。

四、配置 IDE 和删除临时文件
但是整个过程还没有结束,我们还需要配置 IDE 。打开 Visual Studio 2008 SP1( 其它 VC 开 发平台也类似 ) ,选择“工具”,再选 择“选项”,然后在“项目和解决方案”下面选择 vc++ 目录,在“包含目录”下面添加 Boost include 路径:
在库文件下面添加 Boost lib 路径:

现 在 Boost 的安装目录已经膨胀到了 1.04G
源代码的目录,即 D:/boost_1_38_0 已经变得硕大无比,因为生成了大量的临时文件,我建议您删除该文件夹下面的 bin.v2 即可。
爽,编译完成,赶快来段代码,试试:

#include <iostream>

#include <boost/date_time/gregorian/gregorian.hpp>

using namespace std ;

using namespace boost ;

int main ()

{
cout <<" 请输入您的生日,格式 /"YYYY-MM-DD/":";
string strBirthday ;

cin >>strBirthday ;

 

try
{

gregorian ::date birthday ( gregorian ::from_simple_string (strBirthday ) );

gregorian ::date today ( gregorian ::day_clock ::local_day () );

gregorian ::days days_alive = today - birthday ;

 

if ( days_alive < gregorian ::days (0) )
{

cout <<" 哇, 还没出生就能用电脑了,真厉害 "<<endl ;

}
else
{

cout <<" 您在这个世界上出现了: "<< days_alive .days ()<< " 天了 " << endl ;

}

}
catch ( gregorian ::bad_year & e )

{

cerr << e .what () << endl ;

}
catch ( gregorian ::bad_day_of_month & e )
{
cerr << e .what () << endl ;
}
catch ( gregorian ::bad_day_of_year & e )
{
cerr << e .what () << endl ;
}
catch (...)
{
cerr <<"Error!" <<endl ;
}

system ( "pause" );
return 0;

}

接下来,你就可以好好享受 Boost 的奇妙了。


*********************************************************************************

【Boost】 1. 在Windows下编译Boost

这系列文章将逐一介绍Boost库的具体内容。首先我们从Boost在Windows下编译开始讲解。

对于大部分Boost应用来说,它是不用编译的,直接包含头文件就可使用,如:
Java 代码
  1. any  
  2. array  
  3. asio  
  4. conversion  
  5. crc  
  6. bind/mem_fn  
  7. enable_if  
  8. function  
  9. lambda  
  10. mpl  
  11. smart_pt  
any
array
asio
conversion
crc
bind/mem_fn
enable_if
function
lambda
mpl
smart_pt


只有少部分需要编译成库文件,需要编译的库如下:
Java 代码
  1. date_time  
  2. filesystem  
  3. function_types  
  4. graph  
  5. iostreams  
  6. math  
  7. mpi  
  8. program_options  
  9. python  
  10. regex  
  11. serialization  
  12. signals  
  13. system  
  14. test  
  15. thread  
  16. wave  
date_time
filesystem
function_types
graph
iostreams
math
mpi
program_options
python
regex
serialization
signals
system
test
thread
wave


要完全编译boost库需要先准备一些第三方库:

1. Regex所需Unicode支持类库 -- ICU
编译ICU较为简单,解开ICU包之后,在其目录下可以找到一个叫"allinone"的目录,用Visual studio或者visual studio express打开里面的allinone.sln,选择release,即可以编译完成,编译之后,将include目录和release目录下的库文 件拷贝出来,分别放在C:/icu/include和C:/icu/lib.

2. Graph所需的Xml处理类库 -- Expat , 将该自解压文件解压到C:/expat即可。

3.Boost.MPI所需MPI类库 -- Boost的官方站点说需要MPICH或OpenMPI之类的支持,事实上在Windows下总是会提示需要MPIC++,事实上你需要的是 Microsoft Cluster Pack SDK ,下载并默认安装在c:/Program Files/Microsoft Compute Cluster Pack下。

现在完全编译Boost所需要的类库都准备好了。

下载Boost并解压到C:/boost.src,进入Visual studio prompt,然后运行boost.src目录下的bootstrap.bat,这个脚本会帮你生成编译所需的bjam.exe文件。

如果你机器上同时有多个不同版本的VC++存在,先修改project-config.jam,将
"using msvc ;"改为诸如" using msvc : 9.0 ;"

要支持mpi,你可以建立一个user-config.jam文件,然后添加一行“using mpi ;”即可

接下来的工作,我写了个小脚本boost.bat
Batch 代码
  1. @echo off    
  2. @echo Making all Boost library -- By Ray Linn    
  3. set EXPAT_INCLUDE=C:/expat/source/lib    
  4. set EXPAT_LIBPATH=C:/expat/bin    
  5. set INCLUDE=%INCLUDE%;c:/Program Files/Microsoft Compute Cluster Pack/Include;c:/Program Files/Microsoft Compute Cluster Pack/Include/i386;  
  6. set LIBPATH=%LIBPATH%;c:/Program Files/Microsoft Compute Cluster Pack/LIB/i386;    
  7.   
  8. echo adding -a to force rebuild  
  9. :debug  
  10.   
  11. bjam -s HAVE_ICU=1  -s ICU_PATH=C:/icu threading=multi link=static runtime-link=shared variant=debug --user-config=./user-config.jam --prefix= "C:/boost"  install  
  12.   
  13. :release  
  14.   
  15. bjam -s HAVE_ICU=1  -s ICU_PATH=C:/icu threading=multi link=static runtime-link=shared variant=release --user-config=./user-config.jam --prefix= "C:/boost"  install  


编译后会得到debug和release两个版本的boost,至此Boost编译完成。现在我们开始配置visual studio以方便以后使用Boost类库。

先设置一个环境变量
Java 代码
  1. set Boost=C:/boost  
set Boost=C:/boost


接着打开Visual studio的菜单 tools-->Options...->projects and solutions-->VC++ directories 如图添加Boost类库的头文件和库文件的路径。



下面这一小段代码用于测试设置是否正确:
C++代 码
  1. #include "stdafx.h"   
  2. #include <iostream>   
  3. #include <iterator>   
  4. #include <algorithm>   
  5. #include <string>   
  6. #include <boost/regex.hpp>   
  7.   
  8. int  _tmain( int  argc, _TCHAR* argv[])  
  9. {  
  10.     std::string line;  
  11.     static   const  boost::regex pat( "^Subject:(Re:|Aw:)*(.*)" );  
  12.     while  (std::cin)  
  13.     {  
  14.         std::getline(std::cin, line);  
  15.         boost::smatch matches;  
  16.         if (boost::regex_match(line, matches, pat))  
  17.             std::cout << matches[2] << std::endl;  
  18.     }  
  19. }  


如无差错,这段代码应该可以正确编译并链接。这时候可以删除boost.src。

*********************************************************************************

 

*********************************************************************************

 

*********************************************************************************

 

*********************************************************************************

 

*********************************************************************************

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值