Boost Getting Started 安装文档(翻译1.33版本)

 Boost Getting Started 安装文档(翻译1.33版本)
概要
  • 下载
    • .zip 文件
    • .tar.gz and .tar.bz2 文件
    • Boost CVS 库
  • 准备
    • 配置工具
    • 支持的编译器
  • 编译安装
  • 结果
  • 在Windows下面自动链接
  • 附加的步骤

概要

这个概要将帮助你开始利用Boost库。通过如下的步骤来取得、生成、安装Boost。下面是生成安装Boost的概要

  1. 下载 Boost.
  2. 安装 Boost.Jam.
  3. 配置你的编译工具.
  4. 去Boost发行版文件夹.
  5. 生成和安装.

下载

1 Boost库通过SourceForge文件发布系统来进行发布。可以 从SourceForge下载得到Boost发行版. 并把它解压缩到一个合适的地方。

你从网站上可以得到Boost发行版的所有的库和其他文档。他们被打包为ZIP, TAR.GZ, and TAR.BZ2 文件格式。 (在这里)既可以得到老的版本。

也可以从 CVS 库同步到当前Boost最新的快照版本。

.zip file

.zip 格式被自由和商业的压缩/存档工具广泛的支持。如果你还没有一个.zip文件解压器。那么可以从 Info-ZIP 网站下载一个,这个网站提供了不少操作系统上面的版本。

文本文件的行结束符如果打包为.zip 作为被每一个库开发者支持的(东西)(Text file line endings in the .zip file are as supplied by each library developer),在windows下面工作很好,在linux/unix下面就没那么漂亮了。.tar.gz和.tar.bz2支持对于linux/unix更友好的文件换行符

.tar.gz 和 .tar.bz2 文件

.tar.gz 格式在Unix/Linux下面被广泛的支持。一些Windows的压缩/归档工具也可以顺利读取。因为gzip文档把所有文件看成一个文档压缩,所以要比分别压缩文件的zip压缩出来的文档要小一些。

.tar.bz2 格式在Unix/Linux下面被广泛的支持。并且其还被整合到一些tar工具中,这个格式采用了和.tar.gz不同的压缩方法。所以其可以创建更加小的文件。

为了在Unix/Linux环境下更容易的使用,Text文件换行符,在.tar.gz和.tar.ba2文件中已经被转换成一个新行。

Boost CVS 库

所有的Boost文档,包括实体发行树(代码),包括网站HTML文档都被CVS服务器管理。(Boost网站)提供了命令行,GUI,浏览器访问方式。

通过命令行或者CVS客户端访问CVS

(Boost)库可以从对那些安装了CVS客户端的,可以去访问公共Boost CVS 仓库。Unix/Linux环境的用户可以使用命令行来访问,Windows,Mac或者其他环境的用户则可以通过GUI来访问。

请参考改良过的SourceForgeCVS使用指南第F节。它包含了各种各样的客户端的访问链接。

常规的访问方法如下:

cvs -d:pserver:[email protected]:/cvsroot/boost login
[Hit <return> when it asks for a password]
cvs -z3 -d:pserver:[email protected]:/cvsroot/boost checkout boost
cvs -d:pserver:[email protected]:/cvsroot/boost logout

请阅读你的CVS手册来获得更多的信息。

这种访问是只读的;如果你是一个库的作者并且打算向CVS提交代码,请联系 相关人员。

通过网页浏览器访问Boost CVS

你可以近代的浏览器来访问 Boost CVS 文件   你可以通过颜色的不同看到一个文件被更新了多少次 注意:这个接口只是用来显示个别文件的修改历史 从CVS里的BoostBook产生 文档

一些Boost文档产生自CVS仓库里面的BoostBook XML 代码,这些代码并没有被转换成可以阅读的HTML参考文档。可以访问 Nightly Generated 文档来查看通过"nightly build"生成的HTML文档。

准备

Boost推荐使用Boost.Build(Boost编译生成系统)来生成安装Boost库。 本文档剩下的部分解释它的用法。但是用不用这个系统就看你的需求了。注意,一些虽然库同样也包含了非Boost.Build的make文件或者工程文件。 但是Boost.Build却包含了构建Boost所需要的全部文件。

2 这个生成系统使用Boost.Jam,一个 Perforce Jam 扩展版本--这是make 一种轻量级的替代品。 推荐你去SourceForge 下载一个Boost.jam的可执行文件 如果你所使用的环境没有预先编译好的可执行的Boost.Jam或者如果你在使用一个还没有发布的Boost源码。那么你就需要 从代码手动生成bjam , 而bjam的代码也包含在Boost的源码树里面。编译好Boost.Jam以后,把bjam的执行文件放在你的Boost根目录下面就可以了。

配置编译工具

在使用Boost.Build之前,你需要指定编译工具,有两种方法可以做到使得Build.System正常的工作。

  1. 用户可以用常规的方法为它他算使用的每一套编译工具集设置一套变量。 例如,设置Microsoft VC++, 就可以在PATH变量中添加...VC98/Bin 或者 .../VC7/Bin的路径, 还需要编译之前调用一次VCVAR32.BAT或者VSVAR32.BAT(这样它就可以用VC来编译Boost了)。 而使用CodeWarrior , 就应该调用cwenv.bat,而且其他的Metrowerks工具/命令行工具也应该在path变量中。 大多数的Unix系统都会预先配置好这些变量而不需要用户来干预。

  2. 某一个用户不打算让他的变量被弄乱设置或者他也不是很了解他的编译工具的配置。作为一种替代,他(她)可以设置一个变量指向她的编译工具的安装目录, 这个变量可以事先在命令行环境变量里面声明,或者在调用bjam时声明, 知道定义好这个变量, 那些被用到的变量会被自动的找到并且设置好。这个变量就是-s,例如:

    bjam "-sGCC_ROOT_DIRECTORY=/usr/local/gcc-3.3.2"

    一些变量,例如工具集变量TOOLS ,可以接收多个用空格分开的值。 其他的,比如上述的path,可以包含空格。对于一些环境,你还可以引用其他适当的设置方法(译者注:这可能是说可以使用shell变量一类的东西)。

被支持的编译工具

3 下面是Boost.Build支持的编译工具,为了配置 那些工具,可以点击最左边的名字的链接。

编译工具名 说明
borland Borland C++
como Comeau C++ compiler front-end for non-Windows platforms
como-win32 Comeau C++ compiler front-end for Windows, using Microsoft Visual C++as a back-end.
cw Metrowerks CodeWarrior Pro 6.x, 7.x, 8.x, and 9.x command-line tools
darwin Apple Darwin OS hosted GNU GCC
dmc Digital Mars C++.
dmc-stlport Digital Mars C++, using the STLport standard library implementation
edg Edison Design Group compiler front-end (evaluation version)
gcc GNU GCC on Unix and Cygwin.
gcc-stlport GNU GCC on Unix and Cygwin, using the STLport standard library implementation
gcc-nocygwin GNU GCC Cygwin command line compiler tools running in "no-cygwin" mode (produces commercially redistributable objects)
intel-linux Intel C++ for Linux
intel-win32 Intel C++ for Windows using the Dinkumware standard library in the Intel-required Microsoft Visual C++ 6 or 7 installation
kcc KAI C++
kylix Borland C++ for Linux (Kylix).
mingw GNU GCC and associated tools in MinGW configuration (produces commercially redistributable objects)
mingw-stlport GNU GCC and associated tools in MinGW configuration (produces commercially redistributable objects), using the STLport standard library implementation
mipspro SGI MIPSpro C and C++
msvc Microsoft Visual C++ version 6 command-line tools. NOTE; For version 7.x (the .NET series) use the vc7, vc-7_1, or vc-8_0 toolsets below.
msvc-stlport Microsoft Visual C++ version 6 command-line tools, using the STLport standard library implementation. NOTE; For version 7.x (the .NET series) use the vc7-stlport or vc-7_1-stlport toolsets below.
sunpro SunPRO C++ compiler
tru64cxx Compaq C++ for Tru64 UNIX (versions prior to 6.5)
tru64cxx65 Compaq C++ Version 6.5 for Tru64 UNIX
vacpp IBM Visual Age C++ command-line tools
vc7 Microsoft Visual C++ command-line tools from Visual Studio .NET.
vc7-stlport Microsoft Visual C++ command-line tools from Visual Studio .NET + STLPort.
vc-7_1 Microsoft Visual C++ command-line tools from Visual Studio .NET 2003.
vc-7_1-stlport Microsoft Visual C++ command-line tools from Visual Studio .NET 2003 + STLPort.
vc-8_0 Microsoft Visual C++ command-line tools from Visual Studio .NET 2005.

Build and Install

共同的编译安装处理流程都是被top-level build文件(Jamfile)驱动的。

4

首先你需要进入你的Boost发行版的目录,例如:

chdir boost-1.31.0

默认情况下,Boost将试图编译全部的库并且把库和头文件安装到默认的路径中去。 在Unix系统中,默认的路径是"/usr/local"。 而Windows系统则是 "C:/Boost"。Boost库将会被安装到这些文件夹的“lib”子文件夹下面。 而头文件则会被安装到"<include/boost-1_33>"子文件夹里面。所有的这些设定都是来源于你所用的系统。

5 调用build system,指定 编译工具来安装,比如说,GNU/GCC。

bjam "-sTOOLS=gcc" install

如果你只打算生成库并且把编译好的库收集到一个文件夹里面而不打算安装它们。

bjam "-sTOOLS=gcc" stage

这个编译和安装系统可以通过一个GNU风格的参数集合来控制。这些命令参数可以允许你指定安装目录,不安装某一个库, 下面是这些命令和参数的一些介绍。你还可以用bjam --help"来查看这些参数。

bjam [options...] [install|stage]

动作(命令)  
none 只生成Boost库,这个命令是让你做install命令的第一个步骤用的。 这个命令通常不会拷贝生成好的库到安装目录。
install 编译安装Boost的库和头文件。
stage 生成Boost库并且把生成物拷贝到一个文件夹中。
参数  
--help 显示命令的一些参数和语法的一些概要。
-sTOOLS=<toolsets> 指定编译工具集列表,通常只需要一个编译工具。
--prefix=PREFIX 安装的目标文件夹。
Win32默认: C:/Boost
Unix、Linux等默认: /usr/local
--exec-prefix=EPREFIX Install architecture dependent files here.(这个是做啥的不知道)
默认; PREFIX
--libdir=DIR 安装库的目标文件夹。
默认: EPREFIX/lib
--includedir=DIR 安装代码头文件的文件夹,Boost头文件夹将会安装在定义的文件夹的 "boost-<version>" 里面。
默认: PREFIX/include
--builddir=DIR 指定使用的生成文件夹,这将编译代码时产生的中间文件放到一个指定的路径下而不用和代码混在一起。 推荐!
--stagedir=DIR 如果只是使用state生成库文件,这个变量指定这些库将会被放在哪里。
默认; ./stage
--without-<library> 指定不编译,安装的库。
--with-<library> 指定编译、生成的库,这个变量改变默认的生成所有的库的设定,而 生成指定的库。
--with-python-root[=PYTHON_ROOT] 用指定的Python开发包生成Boost.Python库,PYTHON_ROOT代表Python的开发包的目录。 Boost.Python只在提供的PYTHON_ROOT有效的情况下才被编译。
Win32环境默认: C:/Python24
Unix,Linux , Cygwin环境默认:/usr
--with-python-version[=2.4] 生成Boost.Python库的Python的版本。
默认: 2.4.
--with-pydebug 用Python的调试运行环境编译Boost.Python。 这是用Python的调试版来生成一个库的附加集合。而同时,常规的Boost.Python也会被生成。
-sHAVE_ICU=1 Boost.Regex的Unicode版本依赖于ICU 库。 而这个库一定要在同一个编译器下面生成并且安装到编译器所能找到的include和lib文件夹下面。 请参考 the Boost.Regex 安装文档. 获得更多的信息。
-sICU_PATH=path Boost.Regex的Unicode版本依赖于ICU 库。而这个库一定要在你所使用的同一个编译器下面生成,如果你在安装ICU的时候使用的prefix为 --prefix=/usr/local/icu/3.3,那么在这里,你就可以设置 -sICU_PATH=/usr/local/icu/3.3. 请参考 Boost.Regex 安装文档. 获得更多的信息。
-sNO_COMPRESSION=1 生成Boost.Iostreams库的时候不使用外部的zlib和libbz2来生成压缩库。 如果你用Windows,那么这个选项默认为1(就是不生成压缩库);如果你用unix,则压缩库很有可能默认就被生成了,所以如果这个参数不起作用, 你可以参考Boost.Iostreams安装文档

这里有一些 Boost.Build 和 Boost.Jam 支持的附加参数。其中最重要的可能就是"-sBUILD= "。这个参数允许你覆盖默认的编译目标。参数值"<features/variants>" 是一个用空格分隔的列表。features以一个tag和一个或多个值的方式出现;variant则是features集合做附加说明的一个简单的符号名字。例如默认的编译目标是 "debug release <runtime-link>static/dynamic <threading>single/multi" 其中"debug" 和 "release"就是variant,那么每一个features都会带有这两个variant.

如果你有些关于编译安装处理的一件。请写信给Boost.Build mailing list 我们会认真的阅读您提出的意见。

生成物

生成物包括:静态库,动态库,而不同的环境会让库的名称也不一样。一个简单的Boost库默认将会产生八个不同的库。 例如Boost.Datetime库在Unix 类系统下面将会被处理成:

  1. libboost_date_time-gcc-d-1_31.so
  2. libboost_date_time-gcc-mt-d-1_31.so
  3. libboost_date_time-gcc-1_31.so
  4. libboost_date_time-gcc-mt-1_31.so
  5. libboost_date_time-gcc-d-1_31.a
  6. libboost_date_time-gcc-mt-d-1_31.a
  7. libboost_date_time-gcc-1_31.a
  8. libboost_date_time-gcc-mt-1_31.a
· 库前缀
 
lib
· 库名称
boost_date_time
· 编译工具
- gcc
· 线程模式
- mt
· 运行模式
- d
· Boost 版本
- 1_31
· 库类型
.a  

库前缀

一些系统要求库应该具有“lib”前缀,例如Unix,和其他的例如在Winodws运行的GCC,因此在所有的Unix类型的系统和Windows上使用的Boost静态库上面都会被加上这个前缀。 而Unix共享库,和windows静态库则被分别命名为

  • lib*.so
  • lib*.a

而Winodws的共享库则没有prefix前缀来区别“import libraries”和"static libraries"。因此在Windows下面, 共享库被命名为:

*.dll 共享库版本
*.lib dll(共享库)的"Import library"
lib*.lib "Static library"版本



库名称

Boost"会用boost_" 前缀来命名库用以区别您的系统上其他的库。

编译工具

编译工具名字是你基于你所使用的的编译工具的缩写。这个缩写由编译器的名称(2-4个字符)和该编译器的大小出版号组成的。 。举一个例子如果你的编译工具是"gcc-3_2_3" 那么编译工具的tag就会是"gcc32"。各个编译器的缩写如下:

编译工具名称 缩写
borland bcb
como como
como-win32 como
cw cw
darwin osx
dmc dmc
dmc-stlport dmc
edg edg
gcc gcc
gcc-stlport gcc
gcc-nocygwin gcc
intel-linux il
intel-win32 iw
kcc kcc
kylix bck
mingw mgw
mingw-stlport mgw
mipspro mp
msvc vc
msvc-stlport vc
sunpro sw
tru64cxx tru
tru64cxx65 tru
vacpp xlc
vc7 vc
vc7-stlport vc
vc-7_1 vc
vc-7_1-stlport vc
vc-8_0 vc
Others The first part of the toolset name.

线程模式

这个tag标志着这个库所支持的线程。如果多线程被支持,那么这个tag就会被加上"-mt",反之则不加。

运行时

这定义了编译好的库的“compiled against”的运行时类型和编译时其二进制编码目标。每一中运行时类型和和生成代码参数都用一个字母表示。

关键字 特征
s 静态链接库
g 调试运行库
y 调试Python系统
d 激活调试代码
p STLport运行时库,代替宿主编译器的运行时库
n STLport运行时库使用“本地”IO流代替STLportIO流

举一个例子,如果你用STLport和本地的IO流库来编译一个调试模式的库,那么这个库的命名就是 "-sgdpn"。

Boost 版本

这标志着Boost库的版本号码。由主版本号和副版本号和一个下划线组成。例如1.31.0对应的就是

举一个例子,如果你用STLport和本地的IO流库来编译一个调试模式的库,那么这个库的命名就是 "-1_31"。如果这里面还包括了补丁号,比如说1.31.1,那么就命名为"-1_31_1"

库类型

这标识了库的类型,这时根据环境不同而不同的。在windows上面共享库是.dll 静态库则是".lib"。在unix上面静态库是".a",动态库是".so"。 一些编译工具在Unix还会支持全版本号(例如".so.1.31.0")的符号链接。

在Windows自动链接

Boost拥有自动链接的特性,即:只要你include了库的头文件就可以链接到正确的库。 为了这个特性,你所使用的编译器一定要支持#pragma comment(lib, name) Microsoft Visual C++, Intel C++, Metrowerks C++ , 和 Borland C++ 都支持这个)。

如果你链接到动态运行库,那么你可以选择链接到静态链接库和动态链接库的其中任意一个, 默认是静态链接,你可以定义 BOOST_WHATEVER_DYN_LINK宏 强制使Boost链接到动态链接库。

这个特性可以利用BOOST_WHATEVER_NO_LIB强制关闭,或者在Boost全局定义BOOST_ALL_NO_LIB

如果你打算观察库的链接情况,那么就可以定义BOOST_LIB_DIAGNOSTIC。 然后使用#pragma message 来观察选择库的情况。

这里有一些Boost库(Boost.Test 一个测试特例) 是不支持自动链接的,至于技术原因,请参考每一个库的文档,而 Boost.Config 文档提供了更多的配置macro的信息。 下面的列表是当前支持的配置 (只有头文件的库没有列在这里):

Library Static Link Dynamic Link Default linkage Automatic library selection Comments
Date-Time Yes Yes static Yes  
Filesystem Yes

Yes

static Yes  
Graph Yes No static No   The separate Graph library source is needed only when reading an AT&T graphviz file.
Iostreams Yes

Yes

static Yes  
Program Options Yes Yes static Yes  
Python Yes Yes dynamic No Since all Python extensions are DLL's it makes sense to dynamic link to the Boost Python library by default (static linking is only really an option if you are embedding python).
Regex Yes Yes static Yes  
Serialization Yes Yes static Yes  
Signals Yes Yes static Yes  
Test Yes No static No Which library you link to depends upon which program entry point you define, rather than which Boost.Test features you use.
Thread Partial Yes static (Visual C++), otherwise dynamic Yes For technical reasons static linking is supported on only one Windows compiler (Visual C++).
Wave Yes Yes static Yes  


附加的步骤

根据环境的不同,你可能在安装配置Boost之前进行一些附加的配置。

Depending on your platform and configuration you may need to perform some additional configuration to get Boost to build and install.

  • 配置Boost源代码 在大多数环境下可能不需要这一步,但是如果你打算在Boost没有支持、测试过的环境下生成Boost库, 那么这一步就是必须的。

  • 如果Boost.Build检测到你的Python的安装有问题,那么Boost.Build将会打印一些短消息来告诉你如何配置才能找到Python。 更多的信息可以看更详细的Python指令.

    Revised $Date: 2005/11/23 14:09:43 $

    Copyright © Rene Rivera 2003.
    Copyright © Jens Maurer 2001.
    Copyright © John Maddock 2004.

    Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt)

 

你可能感兴趣的:(C++,python,Microsoft,文档,cvs,library)