| 一、下載編譯所需類庫: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 復(fù)制到 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 目錄中的庫文件復(fù)制到 D:\Boost\TempLib\ICU\Include 和 D:\Boost\TempLib\ICU\Lib 中。
 將編譯出來的 bin 路徑加入到系統(tǒng) path 中,再打開 allinone.sln,分別將 cintltst、intltest、iotest 三個測試項目設(shè)置為啟動項,運行測試。
    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
 設(shè)置環(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目錄是中間文件,編譯后刪除即可。如果需要去掉編譯過程中的一些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
 三、設(shè)定vs2010環(huán)境。(注:在2010環(huán)境下這步,在項目-->右鍵屬性-->VC++ Directories 中去填寫對應(yīng)路徑 )
 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) << " " );
 }
 設(shè)置:
 右鍵單擊解決方案名->屬性,在彈出的窗口中 配置屬性->C/C++->常規(guī)->附加包含目錄,把解壓boost的根目錄包含進去。 可能隨安裝時的參數(shù)以及程序的不同,路徑的設(shè)置有些不同,但要保證VS能找到文件即可。
 運行:
 運行后,在控制臺輸入
 1 2 3 <Enter>
 應(yīng)輸出
 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;
 }
 }
 設(shè)置:
 右鍵單擊解決方案名->屬性,在彈出的窗口中 配置屬性->C/C++->常規(guī)->附加包含目錄,把解壓boost的根目錄包含進去。 配置屬性->鏈接器->常規(guī)->附加庫目錄,把編譯好的boost庫所在目錄包含進去。 可能隨安裝時的參數(shù)以及程序的不同,路徑的設(shè)置有些不同,但要保證VS能找到文件即可。
 運行:
 運行后,在控制臺分別輸入
 Subject:My email <Enter>
 Subject:Re: My email <Enter>
 My email <Enter>
 應(yīng)分別輸出
 My email
 My email
 
 其他編譯參數(shù)說明:
 stage/install: stage表示只生成庫(dll和lib),install還會生成包含頭文件的include目錄。本人推薦使用stage,因為install生成的這個include目錄實際就是boost安裝包解壓縮后的boost目錄(E:\SDK\boost_1_39_0\boost,只比include目錄多幾個非hpp文件,都很?。?,所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節(jié)省編譯時間,也節(jié)省硬盤空間。
 toolset: 指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。
 without/with: 選擇不編譯/編譯哪些庫。因為python、mpi等庫我都用不著,所以排除之。另外,wave、graph、math、regex、test、program_options、serialization、signals這幾個庫編出的靜態(tài)lib都非常大,所以不需要的也可以without掉。這可以根據(jù)各人需要選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話,是需要python語言支持的,應(yīng)該到python官方主頁http://www./下載安裝。
 stagedir/prefix: stage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。
 build-dir: 編譯生成的中間文件的路徑。這個本人這里沒用到,默認就在根目錄(E:\SDK\boost_1_39_0)下,目錄名為bin.v2,等編譯完成后可將這個目錄全部刪除(沒用了),所以不需要去設(shè)置。 link: 生成動態(tài)鏈接庫/靜態(tài)鏈接庫。生成動態(tài)鏈接庫需使用shared方式,生成靜態(tài)鏈接庫需使用static方式。一般boost庫可能都是以static方式編譯,因為最終發(fā)布程序帶著boost的dll感覺會比較累贅。
 runtime-link: 動態(tài)/靜態(tài)鏈接C/C++運行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產(chǎn)生4種組合方式,各人可以根據(jù)自己的需要選擇編譯。一般link只選static的話,只需要編譯2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。
 threading: 單/多線程編譯。一般都寫多線程程序,當然要指定multi方式了;如果需要編寫單線程程序,那么還需要編譯單線程庫,可以使用single方式。
 debug/release: 編譯debug/release版本。一般都是程序的debug版本對應(yīng)庫的debug版本,所以兩個都編譯。
   另:Boost中bjam的參數(shù)使用方法: 1.完全編譯安裝: bjam --toolset=msvc install
 完成后會生成一個bin.v2編譯時的臨時目錄,手動刪除。生成另一個目錄C:\boost,里面為所有的頭文件和庫文件。頭文件目錄為boost_1_34_1\boost目錄復(fù)制過去的。
 2.只編譯相應(yīng)的庫文件 bjam --toolset=msvc stage
 完成后同樣會生成bin.v2臨時目錄。另一個目錄為stage文件,里面有對應(yīng)的庫文件。
 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,多線程 |