VS2008+Boost+1_47_0+STLPort-5.2.1安装及使用配置

来源:互联网 发布:韦德06年总决赛数据 编辑:程序博客网 时间:2024/05/20 22:01

一.编译安装STLPort

1、从STLPort官网http://www.stlport.org/下载STLport-5.2.1.tar.bz2,使用WinRar或其他工具将其解压到硬盘任何位置,本人解压到了C:\STLport,当然您也可以解压到其他路径中。补充说明下,截止本文发布时间,STLport最新稳定版为5.2.1。

2、进入Visual Studio 2008命令行,执行命令cd C:/STLport/STLport5.2.1进入STLPort的根目录

3、执行命令configue msvc9配置编译环境。

6、执行命令cd C:/STLport/STLport5.2.1/lib。

7、执行命令nmake –f msvc.mak clean install,执行STLport的编译过程

编译完成后在STLPort主目录C:/STLport/STLport5.2.1下面比之前多出了lib和bin两个文件夹,所有编译产生的*.dll和*.lib文件都已经自动复制到了这两个文件夹下面,同时C:/STLport/STLport5.2.1/build/lib目录下产生的obj文件夹则可以删除,以免中间文件占用硬盘空间(多达315M左右)。

二.编译安装Boost1.470

1、从boost官网http://www.boost.org/下载boost_1_47_0.7z,并解压到本地硬盘,本人解压到了C盘中,解压后的boost目录为C:/boost_1_47_0

2、进入Visual Studio 2008命令行,执行命令cd C:/boost_1_47_0进入boost的根目录,执行命令bootstrap.bat运行批处理文件,生成了编译boost库的工具bjam.exe

3、修改Boost配置文件

  进入文件夹C:/boost_1_47_0/tools/build/v2用记事本打开文件user-config.jam。

  找到文件中的MSVC configuration处, 将# using msvc : 8.0 ;修改为using msvc : 9.0 ; 记得去掉代表注释的#号,

 找到文件中的STLPort configuration处,将# using stlport : : /usr/include/stlport /usr/lib ;修改为 using stlport : 5.2.1 : C:/STLport/STLport-5.2.1/stlport : C:/STLport/STLport-5.2.1/lib ;

4、Visual Studio 2008命令行在C:/boost_1_47_0中执行对boost库完全编译的命令bjam –-toolset=msvc –-build-type=complete stdlib=stlport stage,当然您也可以根据您自己的需求更改bjam工具的编译参数。

接下来是对boost编译过程漫长的等待,本人的电脑完全编译boost耗时40分钟左右。编译完成后,得到的boost库文件都默认编译到文件夹C:/boost_1_47_0/stage/lib中.另外boost的头文件所在文件夹就是C:\boost_1_47_0\boost.

三、  使用Boost之前对VS2008环境的配置

1、配置vs2008的目录选项:VS2008->工具->选项,进入“项目和解决方案”的“VC++目录”页,在“显示以下内容的目录”下面选择“包含文件”,在其中加入C:/STLport/STLport5.2.1和C:\boost_1_47_0,并调整到最前面。选择“库文件”,在其中加入C:/STLport/STLport5.2.1/lib和C:/boost_1_47_0/stage/lib。

2、针对具体工程时,要设置必要的工程属性

    若在Debug模式下使用,应在当前工程的属性中进入“C/C++”的“预处理器”页的“预处理器定义”中添加宏_STLP_DEBUG和__STL_DEBUG两个宏。_STLP_DEBUG为Debug模式下使用STLport需要定义的宏,__STL_DEBUG(注意开始的下划线为双下划线)为Debug模式下与boost配合使用STLport需要定义的宏.

    另,与MFC配合使用STLport需要定义宏_STLP_USE_MFC;如果程序要使用静态库的话定义宏(默认已经定义此宏):_STLP_USE_STATIC_LIB,并且将工程运行库属性改为/MT或/MTD。 

四、给出一小段测试代码 注意头文件的包含顺序

[cpp] view plaincopyprint?
  1. <span style="font-family:SimSun;">//#define _STLP_USE_STATIC_LIB  //静态编译的宏  
  2. #include <iostream>    
  3. #include <vector>  
  4. #include <boost/timer.hpp>  
  5.   
  6. using namespace std;   
  7. using namespace boost;    
  8.   
  9. int main()    
  10. {       
  11.     std::vector<int> vt;  //STLport的vector!  
  12.     timer t;    //构造一个计时器对象        
  13.     cout<<"max timespan:"<<t.elapsed_max()/3600<<"h"<<endl; //定时器最大计时        
  14.     cout<<"min timespan:"<<t.elapsed_min()<<"s"<<endl;      //定时器最小计时(分辨率)          
  15.     cout<<"now time elapsed:"<<t.elapsed()<<"s"<<endl;      //从计时器对象构建至今过了多长时间       
  16.     system( "pause" );  
  17.     return 0;   
  18. } </span>  

原创粉丝点击