现在的位置: 首页 > 综合 > 正文

Windows下Boost库安装方法

2012年08月27日 ⁄ 综合 ⁄ 共 4399字 ⁄ 字号 评论关闭

1. 概述

    最近打算学习一下Boost库,这里记录一下Boost库的安装的方法,IDE涉及DEV C++和VS 2008。

2. 下载

    直接下载链接:参见网页 http://www.boost.org/users/history/version_1_46_1.html,这里的链接网速很慢,78MB的东西,下载了10%左右,就定住了,试了三次都是这样,基本放弃了这个下载链接。
    SVN下载链接,文件保存在“D:\Boost”下:参见网页 http://www.boost.org/users/download/,有一定速度,下载使用了49分钟,传了115.99MB,版本为1.47,我看了下下载的文件夹,吓了我一跳:文件夹大小501MB,占用空间3.15GB。赶紧去网上查了下,有的人说对于1.46版本的Boost,如果完全编译后,可能需要12-15GB的空间,这样就不奇怪了,虽然还没编译就占了3GB。

3. VS2008 Boost库编译(-vc9)

    首先,编译bjam,在命令行下,运行bootstrap.bat -vc9
    然后,编译库。在命令行下,运行:        

    bjam stage --toolset=msvc-9.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="D:\Boost\bin\vc9" link=static runtime-link=shared threading=multi debug release
   bjam stage 
--toolset=msvc-9.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="D:\Boost\bin\vc9" link=static runtime-link=static threading=multi debug release

    编译用了50分钟左右,产生了303MB的文件。

 4. VS2008 Boost库配置    

     Tools -> Options -> Projects and Solutions -> VC++ Directories
     在Library files中,增加D:\Boost\bin\vc9\lib
     在Include files中,增加D:\Boost\
     其中,Library的目录就是前面编译产生的那些库文件保存到的位置
   其中,Include的目录随着Boost的不同版本会不同,现在1.47版本只要指定为D:\Boost即使用SVN下载Boost的文件夹就可以了。

5. VS2008 Boost库测试   

View Code

#include "stdafx.h"
#include 
<iostream>
#include 
<boost/date_time/gregorian/gregorian.hpp>
using namespace std;
using namespace boost;

int _tmain(int argc, _TCHAR* argv[])
{
    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;
}

 6. DEV C++ Boost库编译

     首先,设置gcc的环境变量。在我的电脑上点击右键,选择Properties菜单项。然后在弹出的对话框中选择Advanced页,点击Environment Variables按钮。之后进行如下设置,选择PATH,然后点击Edit按钮,在最后加上DEV-C++编译器的路径,如C:\Program Files\DEV-CPP\Bin,路径之间用分号分隔。 设置完毕点击OK按钮保存。
     然后,编译bjam,运行bootstrap.bat -gcc
     接着,编译boost库:  

    bjam stage --toolset=gcc --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="D:\Boost\bin\gcc" link=static runtime-link=shared threading=multi debug release
    bjam stage 
--toolset=gcc --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="D:\Boost\bin\gcc" link=static runtime-link=static threading=multi debug release

7. DEV C++ Boost库配置

     在Toos->Compiler Options->Directories->C++ Include中,增加D:\Boost
8. DEV C++ Boost库测试

    第一种,只要包含该头文件即可,就能使用该头文件中的所有函数。

View Code

#include <boost/lambda/lambda.hpp>  
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
int main()
{
    using namespace boost::lambda;
    typedef istream_iterator<int> in;   
    for_each(in(cin), in(), cout << (_1 * 3) << " ");
    return 0;
}

   第二种,需要建立一个project,而不能只是编译单个的c++文件,因为在dev c++中,只有在project中才能设置linker的参数。 建立project后,“Project"-->"Project Options"-->"Parameters"选项卡--->在linker框中添加:"-lboost_regex-mt",告诉linker在链接的时候,链接regex库。 

View Code

#include <boost/regex.hpp>
#pragma comment(lib,"D:\boost\boost_1_42_0\stage\libboost_regex-meg34-mt.lib")
#include 
<iostream>
#include 
<string>
int main()
{
    std::
string line;
    boost::regex pat( 
"^Subject: (Re: |Aw: )*(.*)" );
    
while (std::cin)
    {
        std::getline(std::cin, line);
        boost::smatch matches;
        
if (boost::regex_match(line, matches, pat))
            std::cout 
<< matches[1]<<" "<<matches[2<< std::endl;
    }
    
return 0;
}

9. 参考文献

   Boost下载安装编译配置使用指南(含Windows和Linux)  http://kb.cnblogs.com/a/1485890/ 
   VS2008中编译Boost 1.38  http://blog.csdn.net/wrx_2009/archive/2009/06/04/4242841.aspx 
   VS2008 Team System 安装Boost库  http://www.cookbus.com/show-121-1.html 
   boost在DevC++中的安装过程  http://blog.csdn.net/suwei19870312/archive/2011/03/13/6246400.aspx

抱歉!评论已关闭.