下蝲
1 Boost库通过SourceForge文g发布pȝ来进行发布。可?从SourceForge下蝲得到Boost发行? q把它解压羃C个合适的地方?
你从|站上可以得到Boost发行版的所有的库和其他文档。他们被打包为ZIP, TAR.GZ, and TAR.BZ2 文g格式?Q在q里Q既可以得到老的版本?/p>
也可以从CVS 库同步到当前Boost最新的快照版本?
.zip file
.zip 格式被自由和商业的压~?存档工具q泛的支持。如果你q没有一?zip文g解压器。那么可以从 Info-ZIP |站下蝲一个,q个|站提供了不操作系l上面的版本?
?本文件的行结束符如果打包?zip 作ؓ被每一个库开发者支持的Q东西)QText file line endings in the .zip file are as supplied by each library developerQ,在windows下面工作很好,在linux/unix下面没那么漂亮了?tar.gz?tar.bz2支持对于 linux/unix更友好的文g换行W?
.tar.gz ?.tar.bz2 文g
.tar.gz 格式在Unix/Linux下面被广泛的支持。一些Windows的压~?归档工具也可以顺利读取。因为gzip文档把所有文件看成一个文档压~,所以要比分别压~文件的zip压羃出来的文档要一些?
.tar.bz2 格式在Unix/Linux下面被广泛的支持。ƈ且其q被整合C些tar工具中,q个格式采用了和.tar.gz不同的压~方法。所以其可以创徏更加的文g?
Z在Unix/Linux环境下更Ҏ的用,Text文g换行W,?tar.gz?tar.ba2文g中已l被转换成一个新行?/p>
Boost CVS ?br>所有的Boost文档Q包括实体发行树(代码)Q包括网站HTML文档都被CVS服务器管理。(Boost|站Q提供了命o行,GUIQ浏览器讉K方式?
通过命o行或者CVS客户端访问CVS
(Boost)库可以从寚w些安装了CVS客户端的Q可以去讉K公共Boost CVS 仓库。Unix/Linux环境的用户可以用命令行来访问,Windows,Mac或者其他环境的用户则可以通过GUI来访问?
请参考改良过的SourceForgeCVS使用指南WF节。它包含了各U各L客户端的讉K链接?
常规的访问方法如下:
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/boost login
[Hit <return> when it asks for a password]
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/boost checkout boost
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/boost logout
请阅M的CVS手册来获得更多的信息?/p>
q种讉K是只ȝQ如果你是一个库的作者ƈ且打向CVS提交代码Q请联系 相关人员?/p>
通过|页览器访问Boost CVS
你可以近代的览器来讉KBoost CVS 文g 你可以通过颜色的不同看C个文件被更新了多次 注意:q个接口只是用来昄个别文g的修改历?从CVS里的BoostBook产生文档
一些Boost文档产生自CVS仓库里面的BoostBook XML 代码Q这些代码ƈ没有被{换成可以阅读的HTML参考文档。可以访?Nightly Generated 文档来查看通过"nightly build"生成的HTML文档?
准备
Boost推荐使用Boost.BuildQBoost~译生成pȝQ来生成安装Boost库?本文档剩下的部分解释它的用法。但是用不用q个pȝq你的需求了。注意,一些虽然库同样也包含了非Boost.Build的make文g或者工E文件?但是Boost.Build却包含了构徏Boost所需要的全部文g?
2 q个生成pȝ使用Boost.Jam,一?Perforce Jam 扩展版本--q是make 一U轻量的替代品?推荐你去SourceForge 下蝲一个Boost.jam的可执行文g 如果你所使用的环境没有预先编译好的可执行的Boost.Jam或者如果你在用一个还没有发布的Boost源码。那么你需?从代码手动生成bjam Q?而bjam的代码也包含在Boost的源码树里面。编译好Boost.Jam以后Q把bjam的执行文件放在你的Boost根目录下面就可以了?
配置~译工具
在用Boost.Build之前Q你需要指定编译工P有两U方法可以做C得Build.System正常的工作?
用户可以用常规的Ҏ为它他算使用的每一套编译工具集讄一套变量?例如Q设|Microsoft VC++, 可以在PATH变量中添?..VC98/Bin 或?.../VC7/Bin的\径, q需要编译之前调用一ơVCVAR32.BAT或者VSVAR32.BATQ这样它可以用VC来编译Boost了)?而用CodeWarrior , 应该调用cwenv.batQ而且其他的Metrowerks工具/命o行工具也应该在path变量中?大多数的Unixpȝ都会预先配置好这些变量而不需要用hq预?
某一个用户不打算让他的变量被弄ؕ讄或者他也不是很了解他的~译工具的配|。作ZU替代,??可以讄一个变量指向她的编译工L安装目录Q?q个变量可以事先在命令行环境变量里面声明Q或者在调用bjam时声明, 知道定义好这个变量, 那些被用到的变量会被自动的找到ƈ且设|好。这个变量就?sQ例如:
bjam "-sGCC_ROOT_DIRECTORY=/usr/local/gcc-3.3.2"
一些变量,例如工具集变量TOOLS Q可以接收多个用I格分开的倹{?其他的,比如上述的pathQ可以包含空根{对于一些环境,你还可以引用其他适当的设|方法(译者注Q这可能是说可以使用shell变量一cȝ东西Q?
被支持的~译工具
3 下面是Boost.Build支持的编译工PZ配置 那些工具Q可以点L左边的名字的链接?nbsp;
~译工具?说明
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
共同的编译安装处理流E都是被top-level build文g(Jamfile)驱动的?/p>
4 首先你需要进入你的Boost发行版的目录Q例如:
chdir boost-1.31.0
默认情况下,Boost试囄译全部的库ƈ且把库和头文件安装到默认的\径中厅R?在Unixpȝ中,默认的\径是"/usr/local"?而Windowspȝ则是 "C:\Boost"。Boost库将会被安装到这些文件夹?#8220;lib”子文件夹下面?而头文g则会被安装到"<include/boost-1_33>"子文件夹里面。所有的q些讑֮都是来源于你所用的pȝ?
5 调用build systemQ指?~译工具来安装,比如_GNU/GCC?
bjam "-sTOOLS=gcc" install
如果你只打算生成库ƈ且把~译好的库收集到一个文件夹里面而不打算安装它们?/p>
bjam "-sTOOLS=gcc" stage
q个~译和安装系l可以通过一个GNU风格的参数集合来控制。这些命令参数可以允怽指定安装目录Q不安装某一个库Q?下面是这些命令和参数的一些介l。你q可以用bjam --help"来查看这些参数?/p>
bjam [options...] [install|stage]
动作Q命令)
none 只生成Boost库,q个命o是让你做install命o的第一个步骤用的?q个命o通常不会拯生成好的库到安装目录?
install ~译安装Boost的库和头文g?
stage 生成Boost库ƈ且把生成物拷贝到一个文件夹中?
参数
--help 昄命o的一些参数和语法的一些概要?
-sTOOLS=<toolsets> 指定~译工具集列表,通常只需要一个编译工兗?
--prefix=PREFIX 安装的目标文件夹?br>Win32默认Q?C:\Boost
Unix、Linux{默认: /usr/local
--exec-prefix=EPREFIX Install architecture dependent files here.(q个是做啥的不知?
默认; PREFIX
--libdir=DIR 安装库的目标文g夏V?br>默认Q?EPREFIX/lib
--includedir=DIR 安装代码头文件的文g夹,Boost头文件夹会安装在定义的文g夹的 "boost-<version>" 里面?br>默认Q?PREFIX/include
--builddir=DIR 指定使用的生成文件夹Q这编译代码时产生的中间文件放C个指定的路径下而不用和代码混在一赗?推荐Q?
--stagedir=DIR 如果只是使用state生成库文Ӟq个变量指定q些库将会被攑֜哪里?br>默认; ./stage
--without-<library> 指定不编译,安装的库?
--with-<library> 指定~译、生成的库,q个变量改变默认的生成所有的库的讑֮Q?生成指定的库?
--with-python-root[=PYTHON_ROOT] 用指定的Python开发包生成Boost.Python库,PYTHON_ROOT代表Python的开发包的目录?Boost.Python只在提供的PYTHON_ROOT有效的情况下才被~译?
Win32环境默认Q?C:\Python24
Unix,Linux , Cygwin环境默认Q?usr
--with-python-version[=2.4] 生成Boost.Python库的Python的版本?br>默认Q?2.4.
--with-pydebug 用Python的调试运行环境编译Boost.Python?q是用Python的调试版来生成一个库的附加集合。而同Ӟ常规的Boost.Python也会被生成?nbsp;
-sHAVE_ICU=1 Boost.Regex的Unicode版本依赖于ICU 库?而这个库一定要在同一个编译器下面生成q且安装到编译器所能找到的include和lib文g夹下面?请参?the Boost.Regex 安装文档. 获得更多的信息?nbsp;
-sICU_PATH=path Boost.Regex的Unicode版本依赖于ICU 库。而这个库一定要在你所使用的同一个编译器下面生成Q如果你在安装ICU的时候用的prefix?--prefix=/usr/local/icu/3.3Q那么在q里Q你可以设|?-sICU_PATH=/usr/local/icu/3.3. 请参?Boost.Regex 安装文档. 获得更多的信息?nbsp;
-sNO_COMPRESSION=1 生成Boost.Iostreams库的时候不使用外部的zlib和libbz2来生成压~库?如果你用WindowsQ那么这个选项默认?Q就是不生成压羃库)Q如果你用unixQ则压羃库很有可能默认就被生成了Q所以如果这个参C起作用, 你可以参考Boost.Iostreams安装文档
q里有一?Boost.Build ?Boost.Jam 支持的附加参数。其中最重要的可能就?-sBUILD="?q个参数允许你覆盖默认的~译目标。参数?<features/variants>" 是一个用I格分隔的列表。features以一个tag和一个或多个值的方式出现Qvariant则是features集合做附加说明的一个简单的W号?字。例如默认的~译目标?"debug release <runtime-link>static/dynamic <threading>single/multi" 其中"debug" ?"release"是variantQ那么每一个features都会带有q两个variant.
如果你有些关于编译安装处理的一件。请写信lBoost.Build mailing list 我们会认真的阅读您提出的意见?
生成?br>生成物包括:静态库Q动态库Q而不同的环境会让库的名称也不一栗一个简单的Boost库默认将会生八个不同的库?例如Boost.Datetime库在Unix cȝl下面将会被处理成:
libboost_date_time-gcc-d-1_31.so
libboost_date_time-gcc-mt-d-1_31.so
libboost_date_time-gcc-1_31.so
libboost_date_time-gcc-mt-1_31.so
libboost_date_time-gcc-d-1_31.a
libboost_date_time-gcc-mt-d-1_31.a
libboost_date_time-gcc-1_31.a
libboost_date_time-gcc-mt-1_31.a
· 库前~
lib · 库名U?
boost_date_time · ~译工具
- gcc · U程模式
- mt · q行模式
- d · Boost 版本
- 1_31 · 库类?
.a
库前~
一些系l要求库应该h“lib”前缀Q例如UnixQ和其他的例如在Winodwsq行的GCCQ因此在所有的Unixcd的系l和Windows上用的Boost静态库上面都会被加上这个前~?而Unix׃n库,和windows静态库则被分别命名?/p>
lib*.so
lib*.a
而Winodws的共享库则没有prefix前缀来区?#8220;import libraries”?static libraries"。因此在Windows下面Q?׃n库被命名为:
*.dll ׃n库版?
*.lib dllQ共享库Q的"Import library"
lib*.lib "Static library"版本
库名U?br>Boost"会用boost_" 前缀来命名库用以区别您的pȝ上其他的库?
~译工具
~译工具名字是你Z你所使用的的~译工具的羃写。这个羃写由~译器的名称(2-4个字W?和该~译器的大小出版L成的?。D一个例子如果你的编译工h"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.
U程模式
q个tag标志着q个库所支持的线E。如果多U程被支持,那么q个tag׃被加?-mt"Q反之则不加?
q行?br>q定义了~译好的库的“compiled against”的运行时cd和编译时其二q制~码目标。每一中运行时cd和和生成代码参数都用一个字母表C?/p>
关键?特征
s 静态链接库
g 调试q行?
y 调试Pythonpȝ
d Ȁz调试代?
p STLportq行时库Q代替宿ȝ译器的运行时?
n STLportq行时库使用“本地”IO代替STLportIO?
举一个例子,如果你用STLport和本地的IO库来编译一个调试模式的库,那么q个库的命名是 "-sgdpn"?/p>
Boost 版本
q标志着Boost库的版本L。由ȝ本号和副版本号和一个下划线l成。例?.31.0对应的就?
举一个例子,如果你用STLport和本地的IO库来编译一个调试模式的库,那么q个库的命名是 "-1_31"。如果这里面q包括了补丁P比如?.31.1Q那么就命名?-1_31_1"
库类?br>q标识了库的cdQ这时根据环境不同而不同的。在windows上面׃n库是.dll 静态库则是".lib"。在unix上面静态库?.a"Q动态库?.so"?一些编译工具在Unixq会支持全版本号(例如".so.1.31.0")的符号链接?
在Windows自动链接
Boost拥有自动链接的特性,卻I只要你include了库的头文g可以链接到正确的库?Zq个Ҏ,你所使用的编译器一定要支持#pragma comment(lib, name) Microsoft Visual C++, Intel C++, Metrowerks C++ , ?Borland C++ 都支持这??
如果你链接到动态运行库Q那么你可以选择链接到静态链接库和动态链接库的其中Q意一个, 默认是静态链接,你可以定?BOOST_WHATEVER_DYN_LINK?强制使Boost链接到动态链接库?
q个Ҏ可以利用BOOST_WHATEVER_NO_LIB强制关闭Q或者在Boost全局定义BOOST_ALL_NO_LIB
如果你打观察库的链接情况,那么可以定义BOOST_LIB_DIAGNOSTIC?然后使用#pragma message 来观察选择库的情况?/p>
q里有一些Boost?Boost.Test 一个测试特? 是不支持自动链接的,至于技术原因,请参考每一个库的文档,?Boost.Config 文档提供了更多的配置macro的信息?下面的列表是当前支持的配|?(只有头文件的库没有列在这?Q?
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
附加的步?br>Ҏ环境的不同,你可能在安装配置Boost之前q行一些附加的配置?/p>
Depending on your platform and configuration you may need to perform some additional configuration to get Boost to build and install.
配置Boost源代?在大多数环境下可能不需要这一步,但是如果你打在Boost没有支持、测试过的环境下生成Boost库, 那么q一步就是必ȝ?/p>
如果Boost.Build到你的Python的安装有问题Q那么Boost.Build会打印一些短消息来告诉你如何配置才能扑ֈPython?更多的信息可以看更详l的Python指o.
--------------------------------------------------------------------------------
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=930489
在WindowsXP?VC6.0 ~译安装Boost?006-12-08 12:34(zz)首先从Boost的老lhttp://www.boost.org/下蝲。下载完成以后是一个安装文Ӟ其实是q行自动解压~的Q。选择你的目录解压~Boost库。然后我们开始对其进行编译我所下蝲的版本是1.33.1?.cmd2.q入安装VC的目录例如c:\Program Files\Microsoft Visual Studio\VC98\Bin目录3.q行VCVARS32.BATQ这个操作的作用是对此控制台注册VC的环境变量,q样我们可以在L目录使用clq行~译E序Q?.q入Boost的目录例如c:\boost_1_33_1\tools\build\jam_src5.修改build.bat脚本的参?如果必要的话Q你的安装目录不是cQ盘) 原参数 if EXIST "C:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" ( set BOOST_JAM_TOOLSET=msvc set BOOST_JAM_TOOLSET_ROOT=C:\Program Files\Microsoft Visual Studio\VC98\ goto :eof) 修改为(是你的VC6.0安装的目录,我这里D个例子) if EXIST "D:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT" ( set BOOST_JAM_TOOLSET=msvc set BOOST_JAM_TOOLSET_ROOT=D:\Program Files\Microsoft Visual Studio\VC98\ goto :eof)6.在刚才打开的控制台下运?nbsp; D:\d\boost_1_33_1\tools\build\jam_src\build.bat 最l会在目录下生成一个名为bin.ntx86的文件夹里面包含一个bjam.exe可执行文Ӟ其拯到D:\boost_1_33_1目录?.安装python可以?a >www.python.org获得8.讄环境变量SET MSVC_ROOT="c:\Program Files\Microsoft Visual Studio\VC98" SET VISUALC="c:\Program Files\Microsoft Visual Studio\VC98" SET JAM_TOOLSET=VISUALCSET PYTHON_ROOT=D:\Program Files\Python23SET PYTHON_VERSION=2.39开始编译bjam -sTOOLS=msvc installQ将会安装在默认目录C:\BoostQ这L译就完成?0.boostcd在VC6.0的IDE环境中的配置Tools” -> “Options” -> “Diretories” -> “Show Diretories for”中的下拉框选择:1) 在Include files 中添加C:\BOOST\INCLUDE\BOOST-1_33_1\BOOST目录?) 在Library files 中添加C:\BOOST\LIB目录?1.试如果你不能确定,你的~译是否成功。就需要进行一下测试,拿正则表辑ּcMؓ例。测试如下程?#include "stdafx.h"#include <cstdlib>#include <stdlib.h>#include <boost/regex.hpp>#include <string>#include <iostream>using namespace std;using namespace boost;regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");int main(int argc, char* argv[]){ std::string in; cmatch what; cout << "enter test string" << endl; getline(cin,in); if(regex_match(in.c_str(), what, expression)) { for(int i=0;i<what.size();i++) cout<<"str :"<<what[i].str()<<endl; } else { cout<<"Error Input"<<endl; } return 0;}输入:select name from database;输出:str:select name from table str:name str:tableq样完成了单个库编译方法:Q以regexZQ编译boost.regex的另一U办?1.q行vcvars32.batQ可以帮助设|好vc命o行环?2.cd boost_1_33_1\libs\regex\build 3.nmake -vc6.makq种方式可以只编译regex q时会在当前目录下生成vc6目录,里面有已~译好的lib和dll文g, q样以后的步骤中可以讄regex库时指向q里, 包含文g需要设|到boost_1_33_1目录 另修正补充: 用bjam~译regexӞ选项-sTOOLS=vc7中vc7Ҏvc71Q否则下面最l生成工E时需要改个文件名( libboost_regex-vc7-mt-sgd-1_33_1.lib -> libboost_regex-vc71-mt-sgd-1_33_1.lib)
本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/wanfustudio/archive/2006/10/20/1343112.aspx