一、下载编译所需类库: 1、下载 Boost 库和编译工具 JAM。 http://www./users/download/ boost_1_45_0.7z、boost-jam-3.1.18.zip。 将 boost_1_45_0.7z 解压到 D:\Boost,将 boost-jam-3.1.18.zip 解压到 D:\Boost\TempLib\JAM。 开始-->所有程序-->Microsoft Visual Studio 2010-->Visual Studio 工具-->Visual Studio 2010 命令提示。 命令:cd D:\Boost\TempLib\JAM 命令:build.bat 將生成的 bjam.exe 复制到 D:\Boost 中。 2、下载 Regex 所需的 Unicode 支持类库 ICU。 http://site./download icu4c-4_6-src.zip。 将 icu4c-4_6-src.zip 解压缩到 D:\Boost\TempLib\ICU。 打开 source\allinone\allinone.sln,生成 Release 版本,将 include 和 release 目录中的库文件复制到 D:\Boost\TempLib\ICU\Include 和 D:\Boost\TempLib\ICU\Lib 中。 将编译出来的 bin 路径加入到系统 path 中,再打开 allinone.sln,分别将 cintltst、intltest、iotest 三个测试项目设置为启动项,运行测试。 3、下载 Graph 所需的 Xml 处理类库 Expat。 http:///projects/expat/ expat-2.0.1.tar.gz。 将 expat-2.0.1.tar.gz 解压到 D:\Boost\TempLib\Expat。 4、下载 MPI 所需的 MPI 类库 Microsoft Cluster Pack SDK。 http://www.microsoft.com/downloads/en/details.aspx?DisplayLang=en&FamilyID=d8462378-2f68-409d-9cb3-02312bc23bfd http://www.microsoft.com/downloads/en/details.aspx?FamilyID=48C892D9-2425-4C6B-BD9A-2650BE395E8F sdk_x86.msi、CCPSP1x86.msp。 默认安装到 C:\Program Files\Microsoft Compute Cluster Pack 文件夹。 5、下载 bzip 库。 http://www./downloads.html bzip2-1.0.6.tar.gz。 将 bzip2-1.0.6.tar.gz 解压到 D:\Boost\TempLib\bzip。 6、下载 zlib 库。 http://www./ zlib-1.2.5.tar.gz。 将 zlib-1.2.5.tar.gz 解压到 D:\Boost\TempLib\zlib。 7、下载 python 库。 http://www./ python-2.5.4.msi 将 python-2.5.4.msi 安装到 D:\Python。 //address-model=64 就是X64 二、完整编译 Boost 库: Visual Studio 2010 命令提示 命令:cd D:\Boost 设置环境: 命令:set BZIP2_SOURCE="D:\Boost\TempLib\bzip" 命令:set ZLIB_SOURCE="D:\Boost\TempLib\zlib" 命令:set ICU_PATH="D:\Boost\TempLib\ICU" 建立bjam: 命令:bootstrap 编译boost: 编译 DLL 版本 命令:.\bjambjam --toolset=msvc --stagedir=./lib_x86 --builddir=./ address-model=32 link=shared runtime-link=shared threading=multi stage debug release 编译 LIB 版本 命令:.\bjambjam --toolset=msvc --stagedir=./lib_x86 --builddir=./ address-model=32 link=static runtime-link=shared threading=multi stage debug release 编译好的文件放置在boost根目录的lib_x86\lib目录下,在boost根目录下的bin.v2目录是中间文件,编译后删除即可。 如果需要去掉编译过程中的一些warning,可以在tools\build\v2的user-config.jam文件中加入以下这一行: using msvc : 10.0 : : <compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE <compileflags>/D_SCL_SECURE_NO_DEPRECATE <compileflags>/D_SECURE_SCL=0 ; 等待,直至编译完成。 已成功方法: 命令:bootstrap 命令:.\bjam stage --toolset=msvc-10.0 link=static runtime-link=shared threading=multi debug release 命令:.\bjam stage --toolset=msvc-10.0 link=static runtime-link=static threading=multi debug release 其他参考语句: 命令:bootstrap 命令:bjam --without-python --toolset=msvc-10.0 --build-type=complete --prefix="d:\boost" stage 三、设定vs2010环境。(注:在2010环境下这步,在项目-->右键属性-->VC++ Directories 中去填写对应路径 ) Tools -> Options -> Projects and Solutions -> VC++ Directories 在Library files加上d:\boost\boost_1_43_0\lib 在Incl e files加上d:\boost\boost_1_43_0\inclued\boost_1_43_0
测试: 1、Head-only库测试: 程序: #include <boost/lambda/lambda.hpp> #include <iostream> #include <iterator> #include <algorithm> int main() { using namespace boost::lambda; typedef std::istream_iterator<int> in; std::for_each( in(std::cin), in(), std::cout << (_1 * 3) << " " ); } 设置: 右键单击解决方案名->属性,在弹出的窗口中 配置属性->C/C++->常规->附加包含目录,把解压boost的根目录包含进去。 可能随安装时的参数以及程序的不同,路径的设置有些不同,但要保证VS能找到文件即可。 运行: 运行后,在控制台输入 1 2 3 <Enter> 应输出 3 6 9
2、链接lib文件: 程序: #include <boost/regex.hpp> #include <iostream> #include <string> int main() { std::string line; boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" ); while (std::cin) { std::getline(std::cin, line); boost::smatch matches; if (boost::regex_match(line, matches, pat)) for(int i = 0; i < 3; ++i) std::cout << matches[i] << std::endl; } } 设置: 右键单击解决方案名->属性,在弹出的窗口中 配置属性->C/C++->常规->附加包含目录,把解压boost的根目录包含进去。 配置属性->链接器->常规->附加库目录,把编译好的boost库所在目录包含进去。 可能随安装时的参数以及程序的不同,路径的设置有些不同,但要保证VS能找到文件即可。 运行: 运行后,在控制台分别输入 Subject:My email <Enter> Subject:Re: My email <Enter> My email <Enter> 应分别输出 My email My email 其他编译参数说明: stage/install: stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录(E:\SDK\boost_1_39_0\boost,只比include目录多几个非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。
toolset: 指定编译器,可选的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。
without/with: 选择不编译/编译哪些库。因为python、mpi等库我都用不着,所以排除之。另外,wave、graph、math、regex、test、program_options、serialization、signals这几个库编出的静态lib都非常大,所以不需要的也可以without掉。这可以根据各人需要选择,默认是全部编译。但是需要注意,如果选择编译python的话,是需要python语言支持的,应该到python官方主页http://www./下载安装。
stagedir/prefix: stage时使用stagedir,install时使用prefix,表示编译生成文件的路径。
build-dir: 编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(E:\SDK\boost_1_39_0)下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。 link: 生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。
runtime-link: 动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。一般link只选static的话,只需要编译2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static。
threading: 单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。
debug/release: 编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。
另:Boost中bjam的参数使用方法: 1.完全编译安装: bjam --toolset=msvc install 完成后会生成一个bin.v2编译时的临时目录,手动删除。生成另一个目录C:\boost,里面为所有的头文件和库文件。头文件目录为boost_1_34_1\boost目录复制过去的。 2.只编译相应的库文件 bjam --toolset=msvc stage 完成后同样会生成bin.v2临时目录。另一个目录为stage文件,里面有对应的库文件。 3.查看需要编译才能使用的库列表 bjam --show-libraries 4.编译特定的库,如只编译regex bjam --toolset=msvc --with-regex stage 生成的库文件在stage目录中。 5.不编译某个库,如不编译regex bjam --toolset=msvc --without-regex stage 生成的库文件在stage目录中。 6.编译特定的库,如只编译regex,生成debug,多线程
|