体验:VC++ .NET 2003 –安装和使用Boost 1.30和Blitz++0.6 之一

类别:VC语言 点击:0 评论:0 推荐:

体验:VC++ .NET 2003 –安装和使用Boost 1.30和Blitz++0.6

小气的神

2003-05-01

 

Article Type: In-Depth 

难度等级:7/9       

版本:1.82

 

“C++ increasingly means Visual C++”        - Scott Meyers

 

上一篇,我介绍了在最新的Visual Studio.NET 2003下编译和使用STLport和Loki的情况。一切还算顺利,这篇文章介绍一下安装和使用Boost 和Blitz++的情况。

对于Boost已经到了大名鼎盛时期的非凡精神,到了初学者侧目拜视,伸手不能触的情形,粗一些描述你会在网上看到中国式的礼仪性评价-“一群牛人写的,一定有它牛的地方,我方小辈还是仔细学习研究吧!”,而官方的前景看来,Boost Library有可能加入到ISO C++ Standard中,我想这是对Boost所做贡献的肯定,也是整个C++社区的一件大事。而对于我来说,日常使用Boost的环境很少,几乎没有,你知道我是个.NET迷J ,其实到上一篇STLPort和Loki就已经够了。出于对一个新手的体谅,如果我有做得不对和欠缺之处请多提意见。

 

首先当然是去下载最新的版本,尽管这是众所周知的地方和问题,www.boost.org,最新的版本是1.3.0,下载下来大约10M,我将其解压缩到C:\boost_1_30_0

我的Visual Studio.NET 2003安装在下面的路径:

D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7

 

之后是比较常见的两个步骤,一个是产生Jam.exe文件,然后是编译boost库,特别是著名的thread库。你会发现boost的许多库是都是通过Include方式来使用的,不用你事先编译,真正编译完成你会发现,如果你使用这些库,是需要自己进行编译的:

Date_time/filesystem/graph/python/regex/signals/test/thread

对应的应该是Date-Time Library/File System Library/Graph Library/Python Library/Regx Library/Signals Library/Test Library/Thread Library

 

所以往往说编译通过,只指编译这些库文件成功,但这并不意味Visual C++.NET 7.1就完全遵循Boost Library或可以完全使用Boost Library中的所有功能,这就是后面我会提到的,你会发现有些函数和模块在不同程度存在编译或是运行的问题。当然这不仅是VC7.1,几乎所有主流的C++编译器都会这样的问题,这个我们在后面会提到一些。

Boost Library库中存在这样的现象,有些库文件提供了mak文件,我们通过 nmake –f xxx.mak install 可以编译成功或使用它,比如regex/vc7.mak; regex/vc6-stlport.mak 但更多的类库必须通过Boost.jam 的Build System来进行编译,这也是造成Boost编译困难的一个原因吧。

 

好吧,我们先来编译Jam,这是我们可以继续的一个先决条件:

关于Jam,也有已经预编译好的,你可以取下面的地址,直接download使用,也可以选取自己编译的方式,当然为了验证你的编译器,或是做个热身,你都会选择自己进行编译的J

 

编译之前,有些问题需要你注意,主要是安装路径和编译器的问题,这里你需要查看两个文件:

C:\boost_1_30_0\tools\build\jam_src\build.bat

C:\boost_1_30_0\tools\build\jam_src\build.jam

对于build.bat的问题是路径问题:

"%ProgramFiles%\Microsoft Visual Studio .NET\VC7\bin\VCVARS32.BAT"

批处理文件是依据这样的判断来寻找VC++的编译器和判断你开发工具的版本,而我的VC安装在这样的目录中D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7结果一定会使得它无法找到编译器,这时你有两个选择,第一是修改build.bat中的路径;第二是设置SET BOOST_JAM_TOOLSET=vc7,SET BOOST_JAM_TOOLSET_ROOT=%ProgramFiles%\Microsoft Visual Studio .NET 2003\VC7\ ;

 

对于build.jam 的问题问题是cl的参数问题,新版本的cl不支持 /LIBPATH: xxxx的方式,解决这个问题的办法是去掉build.jam文件中对这个参数的使用,并且保证你已经设置了INCLUDE和LIB的环境变量,最简单的办法是执行X:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\vsvars32.bat 或 D:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat。

 

使用Visual Studio.NET 安装程序组中的Visual Studio.NET 2003 Command Prompt(见上一篇的说明) 这里需要说明,如果你的VC7的安装路径和boost的安装文件相同你并不需要修改它,但是/LIBPATH参数问题一般VC7.0还是VC7.1都是要调整的。

 

 

完成之后,你只用执行C:\boost_1_30_0\tools\build\jam_src\build.bat即可,如果没有问题你可以在C:\boost_1_30_0\tools\build\jam_src\bin.ntx86看到编译的结果

 

 

我将编译好的Jam.exe和之前修改可以编译的build.bat和build.jam放在一个压缩文件中,你可以到这里进行下载 Build Jam Setup.zip(208K)

 

好了,进行完成这个之后,算是进行完了一个小段落,我们可以开始向下一步前进,编译Boost Library了,看得出并非一帆风顺。

 

在使用Jam编译之前,我们还需要做一些准备工作。

1.     将jam.exe所在的路径放入到环境变量PATH中。

执行varvs32.bat ,

SET PATH= C:\boost_1_30_0\tools\build\jam_src\bin.ntx86;%PATH%

2.     修改,接着修改,这次是:

C:\boost_1_30_0\tools\build\vc7-tools.jam

C:\boost_1_30_0\tools\build\msvc-tools.jam

主要的问题,依然是刚刚提到的两个问题,VC7.1编译器的路径和/LIBPATH的参数问题,这里就不一一列举了,你需要查看这两个文件中的某些语句。当然你可以Downlaod我已经修改好的(包括在上面的Build_Jam_Setup.zip中),解开Zip文件后覆盖即可(建议先备份要覆盖的文件)

3.     之后就可以开始进行编译了,一般你使用下面的命令

PATH=C:\boost_1_30_0;C:\boost_1_30_0\tools\build\jam_src\bin.ntx86;%PATH%

SET MSVC_ROOT="D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7"

SET VC7_ROOT="D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7"

SET VISUALC="D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7"

SET JAM_TOOLSET=VISUALC

 

C:/boost_1_30_0> jam -sBOOST_ROOT=. -sTOOLS=vc7 "-sBUILD=debug release <runtime-link>static/dynamic"

或者是C:/boost_1_30_0>jam -sBOOST_ROOT=. -sTOOLS=vc7 "-sBUILD=debug <runtime-link>static/dynamic"

还有更加有趣的命令,比如:

jam -sBUILD="debug release" -sTOOLS="msvc msvc-stlport" -sVISUALC="\"\"D:\Program Files\Microsoft Visual Studio\VC98\"\"" -sMSVCDir="\"\"D:\Program Files\Microsoft Visual Studio\VC98\"\""

 

这是我在一家日本网站上看到的,因为这之前我用Google查阅的不少网站,发现两家日本的网站,介绍的非常的详细,由于都是日文,我不大看得懂,但有些地方看拷屏和代码还是非常有帮助和启发的。我把它列出来,希望对你也有帮助和启发:

http://www.kmonos.net/alang/boost/      let’s go boost

http://nazy.s27.xrea.com/boost/index.shtml  Nazy's Developer's Site

当然你也可以从Boost.org的官方网站了解到这些信息,我认为有些散乱,整理了一下.

http://www.boost.org/tools/build/build_system.htm

http://www.boost.org/tools/build/jam_src/Jam.html

jam.exe的一些参数意义

a

Build all targets, even if they are current.

dx

Set the debug level to x (0-9)

fx

Read x instead of Jambase.

jx

Run up to x shell commands concurrently.

n

on't actually execute the updating actions.

ox

Write the updating actions to file x.

q

Quit quickly as soon as a target fails.

sx=y

Set variable x=y, overriding environment.

tx

Rebuild x, even if it is up

v

Print the version of jam and exit.

--x

Option is ignored.

 

Build 参数可以是下面的语法

BUILD = { option }.

option = [[<compiler>]<variant>]<feature>value1[[/value2]/value3...] | "debug" | "release

Variable

Default

Example

Notes

TOOLS

Platform-dependent

"-sTOOLS=gcc msvc"

build with gcc and msvc

-sTOOLS=gcc

build with gcc

BUILD

debug

-sBUILD=release

build the release variant

"-sBUILD=debug release"

build both debug and release variants

"-sBUILD=<optimization>speed"

build a subvariant of the default variant (debug) with optimization for speed.

"-sBUILD=debug release <runtime-link>static/dynamic"

build subvariants of the debug and release variants that link to the runtime both statically and dynamically.

ALL_LOCATE_TARGET

empty

-sALL_LOCATE_TARGET=~/build

Generate all build results in the build subdirectory of the user's home directory (UNIX).

 

之后是你需要等待,但是这个时间不会太长也就25分钟左右,整个编译完成。

 

 

图中Failed是我注释了Test Library的结果,因为之前的几次编译,我发现Test Library无法正常的编译过去。检查上述列举的类库,你会发现类似的路径和编译结果:

 

 

 

 

特别:

本文使用的Visual Studio.NET Version 7.1.2292, .NET Framework 1.1.4322是Visual Studio.NET Final Bate的版本还不是最终的版本,其结果不知是否和正式版本下有不同。

cl.exe Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.2292 for 80x86

 

本文原创,CSDN署名首发,所有文字和图片版权所有。未经授权请勿传播、转载或改编。

如果有问题或建议,请发电子邮件给[email protected]

欢迎访问我的WebLog:www.dotNETTools.org/weblog/weblog.html

 

本文地址:http://com.8s8s.com/it/it1799.htm