首先我在晚上找到了很多的说明:我先一一罗列在下
*********************************************************************************
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特定库的需要。
ICU提供了unicode和国际化支持,目前的版本是3.8.1。ICU的主页是http://www.icu-project.org/ 。
可以从http://www.icu-project.org/download/3.8.html 下 载源代码版本和使用VS2005编译的版本。推荐下载源代码版本自己进行编译,以避免依赖于VS2005的运行时库。
ICU的编译比较简单,打开ICU源代码目录下的source/allinone/allinone.sln,需要转换到VS2008格式,直接转 换即可。然后,选择release,Rebuild Solution即可。
(3). 测试
将编译出来的bin目录加入到系统的PATH目录中去。然后,重新打开allinone.sln工程。
需要通过测试的项目
分别设置成启动项目,运行即可。
bzip的主页是 http://www.bzip.org/ ,从http://www.bzip.org/downloads.html 下 面下载源代码包即可,boost直接使用源代码来进行编译。
zlib的主页是http://www.zlib.net/ ,从该网页下 面下载源代码包即可,boost直接使用源代码来进行编译。
python的主页是http://www.python.org/ , 下载python的2.5.2版本,安装即可。boost默认是会编译python,并且会自动寻找python的安装目录。
到开始菜单的VS2008菜单项下,启动Visual Studio 2008 Command Prompt,以下编译步骤均假定直接在该工具下进行编译。
到tools/jam目录下面运行build_dist.bat,编译好的放在tools/jam/stage/boost-jam- 3.1.16-1-ntx86目录下,将bjam.exe复制到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
4.编译boost
將目錄移至d:/boost_1_34_1/下執行
*********************************************************************************
一、下载 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 的奇妙了。
*********************************************************************************
*********************************************************************************
*********************************************************************************
*********************************************************************************
*********************************************************************************
*********************************************************************************