|
这个概要将帮助你开始利用Boost库。通过如下的步骤来取得、生成、安装Boost。下面是生成安装Boost的概要
1 | Boost库通过SourceForge文件发布系统来进行发布。可以 从SourceForge下载得到Boost发行版. 并把它解压缩到一个合适的地方。 |
你从网站上可以得到Boost发行版的所有的库和其他文档。他们被打包为ZIP, TAR.GZ, and TAR.BZ2 文件格式。 (在这里)既可以得到老的版本。
也可以从 CVS 库同步到当前Boost最新的快照版本。文本文件的行结束符如果打包为.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 格式在Unix/Linux下面被广泛的支持。一些Windows的压缩/归档工具也可以顺利读取。因为gzip文档把所有文件看成一个文档压缩,所以要比分别压缩文件的zip压缩出来的文档要小一些。
.tar.bz2 格式在Unix/Linux下面被广泛的支持。并且其还被整合到一些tar工具中,这个格式采用了和.tar.gz不同的压缩方法。所以其可以创建更加小的文件。
为了在Unix/Linux环境下更容易的使用,Text文件换行符,在.tar.gz和.tar.ba2文件中已经被转换成一个新行。
所有的Boost文档,包括实体发行树(代码),包括网站HTML文档都被CVS服务器管理。(Boost网站)提供了命令行,GUI,浏览器访问方式。
(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仓库里面的BoostBook XML 代码,这些代码并没有被转换成可以阅读的HTML参考文档。可以访问 Nightly Generated 文档来查看通过"nightly build"生成的HTML文档。
Some of the Boost documentation is generated from BoostBook XML source stored in the CVS repository, and will not appear directly in the CVS tree as readable HTML. View a nightly build of the generated HTML on the Nightly Generated Documentation page. Where generated HTML is missing from the CVS tree, an attempt has been made to include redirection to this nightly build, but if you are away from an internet connection you may want to download the generated documentation archive from the aforementioned page so you can browse those documents offline.
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正常的工作。
bjam
时声明, 知道定义好这个变量, 那些被用到的变量会被自动的找到并且设置好。这个变量就是-s,例如: 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. |
共同的编译安装处理流程都是被top-level build文件(Jamfile)驱动的。
4 | 首先你需要进入你的Boost发行版的目录,例如:
|
默认情况下,Boost将试图编译全部的库并且把库和头文件安装到默认的路径中去。 在Unix系统中,默认的路径是"/usr/local"。 而Windows系统则是 "C:/Boost"。Boost库将会被安装到这些文件夹的“lib”子文件夹下面。 而头文件则会被安装到"<include/boost-1_33>"子文件夹里面。所有的这些设定都是来源于你所用的系统。
5 | 调用build system,指定 编译工具来安装,比如说,GNU/GCC。
如果你只打算生成库并且把编译好的库收集到一个文件夹里面而不打算安装它们。
|
这个编译和安装系统可以通过一个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 类系统下面将会被处理成:
|
||||||||||||
lib |
|
|||||||||||
boost_date_time |
|
|||||||||||
- | gcc |
|
||||||||||
- | mt |
|
||||||||||
- | d |
|
||||||||||
- | 1_31 |
|
||||||||||
.a |
一些系统要求库应该具有“lib”前缀,例如Unix,和其他的例如在Winodws运行的GCC,因此在所有的Unix类型的系统和Windows上使用的Boost静态库上面都会被加上这个前缀。 而Unix共享库,和windows静态库则被分别命名为
而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库的版本号码。由主版本号和副版本号和一个下划线组成。例如1.31.0对应的就是
举一个例子,如果你用STLport和本地的IO流库来编译一个调试模式的库,那么这个库的命名就是 "-1_31"。如果这里面还包括了补丁号,比如说1.31.1,那么就命名为"-1_31_1"
这标识了库的类型,这时根据环境不同而不同的。在windows上面共享库是.dll 静态库则是".lib"。在unix上面静态库是".a",动态库是".so"。 一些编译工具在Unix还会支持全版本号(例如".so.1.31.0")的符号链接。
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.
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)
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=640004