一、下載編譯所需類(lèi)庫:
1、下載 Boost 庫和編譯工具 JAM。
http://www.boost.org/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。
開(kāi)始-->所有程序-->Microsoft Visual Studio 2010-->Visual Studio 工具-->Visual Studio 2010 命令提示。
命令:cd D:\Boost\TempLib\JAM
命令:build.bat
將生成的 bjam.exe 復制到 D:\Boost 中。
2、下載 Regex 所需的 Unicode 支持類(lèi)庫 ICU。
http://site.icu-project.org/download
icu4c-4_6-src.zip。
將 icu4c-4_6-src.zip 解壓縮到 D:\Boost\TempLib\ICU。
打開(kāi) source\allinone\allinone.sln,生成 Release 版本,將 include 和 release 目錄中的庫文件復制到 D:\Boost\TempLib\ICU\Include 和 D:\Boost\TempLib\ICU\Lib 中。
將編譯出來(lái)的 bin 路徑加入到系統 path 中,再打開(kāi) allinone.sln,分別將 cintltst、intltest、iotest 三個(gè)測試項目設置為啟動(dòng)項,運行測試。
3、下載 Graph 所需的 Xml 處理類(lèi)庫 Expat。
http://sourceforge.net/projects/expat/
expat-2.0.1.tar.gz。
將 expat-2.0.1.tar.gz 解壓到 D:\Boost\TempLib\Expat。
4、下載 MPI 所需的 MPI 類(lèi)庫 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.bzip.org/downloads.html
bzip2-1.0.6.tar.gz。
將 bzip2-1.0.6.tar.gz 解壓到 D:\Boost\TempLib\bzip。
6、下載 zlib 庫。
http://www.zlib.net/
zlib-1.2.5.tar.gz。
將 zlib-1.2.5.tar.gz 解壓到 D:\Boost\TempLib\zlib。
7、下載 python 庫。
http://www.python.org/
python-2.5.4.msi
將 python-2.5.4.msi 安裝到 D:\Python。
//address-model=64 就是X64
二、完整編譯 Boost 庫:
Visual Studio 2010 命令提示
命令:cd D:\Boost
設置環(huán)境:
命令: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目錄是中間文件,編譯后刪除即可。
如果需要去掉編譯過(guò)程中的一些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
其他參考語(yǔ)句:
命令:bootstrap
命令:bjam --without-python --toolset=msvc-10.0 --build-type=complete --prefix="d:\boost" stage
三、設定vs2010環(huán)境。(注:在2010環(huán)境下這步,在項目-->右鍵屬性-->VC++ Directories 中去填寫(xiě)對應路徑 )
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的根目錄包含進(jìn)去。 可能隨安裝時(shí)的參數以及程序的不同,路徑的設置有些不同,但要保證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的根目錄包含進(jìn)去。 配置屬性->鏈接器->常規->附加庫目錄,把編譯好的boost庫所在目錄包含進(jìn)去。 可能隨安裝時(shí)的參數以及程序的不同,路徑的設置有些不同,但要保證VS能找到文件即可。
運行:
運行后,在控制臺分別輸入
Subject:My email <Enter>
Subject:Re: My email <Enter>
My email <Enter>
應分別輸出
My email
My email
其他編譯參數說(shuō)明:
stage/install: stage表示只生成庫(dll和lib),install還會(huì )生成包含頭文件的include目錄。本人推薦使用stage,因為install生成的這個(gè)include目錄實(shí)際就是boost安裝包解壓縮后的boost目錄(E:\SDK\boost_1_39_0\boost,只比include目錄多幾個(gè)非hpp文件,都很?。?,所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節省編譯時(shí)間,也節省硬盤(pán)空間。
toolset: 指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。
without/with: 選擇不編譯/編譯哪些庫。因為python、mpi等庫我都用不著(zhù),所以排除之。另外,wave、graph、math、regex、test、program_options、serialization、signals這幾個(gè)庫編出的靜態(tài)lib都非常大,所以不需要的也可以without掉。這可以根據各人需要選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話(huà),是需要python語(yǔ)言支持的,應該到python官方主頁(yè)http://www.python.org/下載安裝。
stagedir/prefix: stage時(shí)使用stagedir,install時(shí)使用prefix,表示編譯生成文件的路徑。
build-dir: 編譯生成的中間文件的路徑。這個(gè)本人這里沒(méi)用到,默認就在根目錄(E:\SDK\boost_1_39_0)下,目錄名為bin.v2,等編譯完成后可將這個(gè)目錄全部刪除(沒(méi)用了),所以不需要去設置。
link: 生成動(dòng)態(tài)鏈接庫/靜態(tài)鏈接庫。生成動(dòng)態(tài)鏈接庫需使用shared方式,生成靜態(tài)鏈接庫需使用static方式。一般boost庫可能都是以static方式編譯,因為最終發(fā)布程序帶著(zhù)boost的dll感覺(jué)會(huì )比較累贅。
runtime-link: 動(dòng)態(tài)/靜態(tài)鏈接C/C++運行時(shí)庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產(chǎn)生4種組合方式,各人可以根據自己的需要選擇編譯。一般link只選static的話(huà),只需要編譯2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。
threading: 單/多線(xiàn)程編譯。一般都寫(xiě)多線(xiàn)程程序,當然要指定multi方式了;如果需要編寫(xiě)單線(xiàn)程程序,那么還需要編譯單線(xiàn)程庫,可以使用single方式。
debug/release: 編譯debug/release版本。一般都是程序的debug版本對應庫的debug版本,所以?xún)蓚€(gè)都編譯。
另:Boost中bjam的參數使用方法:
1.完全編譯安裝:
bjam --toolset=msvc install
完成后會(huì )生成一個(gè)bin.v2編譯時(shí)的臨時(shí)目錄,手動(dòng)刪除。生成另一個(gè)目錄C:\boost,里面為所有的頭文件和庫文件。頭文件目錄為boost_1_34_1\boost目錄復制過(guò)去的。
2.只編譯相應的庫文件
bjam --toolset=msvc stage
完成后同樣會(huì )生成bin.v2臨時(shí)目錄。另一個(gè)目錄為stage文件,里面有對應的庫文件。
3.查看需要編譯才能使用的庫列表
bjam --show-libraries
4.編譯特定的庫,如只編譯regex
bjam --toolset=msvc --with-regex stage
生成的庫文件在stage目錄中。
5.不編譯某個(gè)庫,如不編譯regex
bjam --toolset=msvc --without-regex stage
生成的庫文件在stage目錄中。
6.編譯特定的庫,如只編譯regex,生成debug,多線(xiàn)程
聯(lián)系客服