網(wǎng)上有很多有關(guān)boost的編譯,不過大部分都需要下載bjam獲取什么stlport的。其實(shí)boost編譯非常簡(jiǎn)單,直接下載源碼就可以進(jìn)行編譯了。 下面我來說說我在XP下使用VC10 和 VC9 編譯boost的心得。
1首先進(jìn)入命令行,不過需要注意的是通過vs2010自帶的命令提示行進(jìn)入。如下圖所示 2 進(jìn)入命令,進(jìn)入boost的目錄,運(yùn)行 bootstrap.bat,1分鐘以后,你就發(fā)在在boost的目錄中就多了一個(gè)文件“bjam.exe”。 3 編譯出bjam.exe 后剩下的工作我們就開始編譯boost了。
一下轉(zhuǎn)自:http://blog.csdn.net/zhuky/article/details/5349703 三、編譯 接下來就是最重要的編譯步驟了。需要打開命令提示符(cmd.exe)窗口并執(zhí)行bjam,可以使用--help參數(shù)來查看命令幫助。這里詳細(xì)講解一下bjam的命令行參數(shù),因?yàn)樗浅V匾?。首先,它涉及到編程環(huán)境的搭建,你需要根據(jù)自己今后具體的使用環(huán)境來選擇合適的命令行參數(shù);其次,它影響到你的硬盤空間,完全編譯的話據(jù)說在3G以上,如果你同時(shí)擁有2個(gè)以上的IDE(如VC6和VC9共存)而且都要用到boost,那么占用多少硬盤就自己算吧……雖說如今大家的硬盤空間都不成問題,但就像本人一樣崇尚合理利用資源不習(xí)慣鋪張浪費(fèi)提倡節(jié)儉的童子應(yīng)該大有人在。綜合以上兩點(diǎn)因素,本人使用的bjam命令如下:
bjam stage --toolset=msvc-9.0 --without-python --without-mpi --without-wave --without-graph --without-math --without-serialization --stagedir="E:/SDK/boost_1_39_0/bin/vc9" link=static runtime-link=shared threading=multi debug release 下面詳細(xì)解釋一下每個(gè)參數(shù)的含義,請(qǐng)務(wù)必仔細(xì)看完: stage/install:stage表示只生成庫(kù)(dll和lib),install還會(huì)生成包含頭文件的include目錄。本人推薦使用stage,因?yàn)閕nstall生成的這個(gè)include目錄實(shí)際就是boost安裝包解壓縮后的boost目錄(E:/SDK/boost_1_39_0/boost,只比include目錄多幾個(gè)非hpp文件,都很?。钥梢灾苯邮褂?,而且不同的IDE都可以使用同一套頭文件,這樣既節(jié)省編譯時(shí)間,也節(jié)省硬盤空間。
toolset:指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等。
without/with:選擇不編譯/編譯哪些庫(kù)。因?yàn)閜ython、mpi等庫(kù)我都用不著,所以排除之。另外,wave、graph、math、regex、test、program_options、serialization、signals這幾個(gè)庫(kù)編出的靜態(tài)lib都非常大,所以不需要的也可以without掉。這可以根據(jù)各人需要選擇,默認(rèn)是全部編譯。但是需要注意,如果選擇編譯python的話,是需要python語言支持的,應(yīng)該到python官方主頁(yè)http://www./下載安裝。
stagedir/prefix:stage時(shí)使用stagedir,install時(shí)使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2008對(duì)應(yīng)的是E:/SDK/boost_1_39_0/bin/vc9,VC6對(duì)應(yīng)的是E:/SDK/boost_1_39_0/bin/vc6,否則都生成到一個(gè)目錄下面,難以管理。如果使用了install參數(shù),那么還將生成頭文件目錄,vc9對(duì)應(yīng)的就是E:/SDK/boost_1_39_0/bin/vc9/include/boost-1_39/boost,vc6類似(光這路徑都這樣累贅,還是使用stage好)。
build-dir:編譯生成的中間文件的路徑。這個(gè)本人這里沒用到,默認(rèn)就在根目錄(E:/SDK/boost_1_39_0)下,目錄名為bin.v2,等編譯完成后可將這個(gè)目錄全部刪除(沒用了),所以不需要去設(shè)置。
link:生成動(dòng)態(tài)鏈接庫(kù)/靜態(tài)鏈接庫(kù)。生成動(dòng)態(tài)鏈接庫(kù)需使用shared方式,生成靜態(tài)鏈接庫(kù)需使用static方式。一般boost庫(kù)可能都是以static方式編譯,因?yàn)樽罱K發(fā)布程序帶著boost的dll感覺會(huì)比較累贅。
runtime-link:動(dòng)態(tài)/靜態(tài)鏈接C/C++運(yùn)行時(shí)庫(kù)。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產(chǎn)生4種組合方式,各人可以根據(jù)自己的需要選擇編譯。一般link只選static的話,只需要編譯2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。
threading:?jiǎn)?多線程編譯。一般都寫多線程程序,當(dāng)然要指定multi方式了;如果需要編寫單線程程序,那么還需要編譯單線程庫(kù),可以使用single方式。
debug/release:編譯debug/release版本。一般都是程序的debug版本對(duì)應(yīng)庫(kù)的debug版本,所以兩個(gè)都編譯。
本人按以上方式分別編譯了靜態(tài)鏈接和動(dòng)態(tài)鏈接兩個(gè)版本后,整個(gè)E:/SDK/boost_1_39_0目錄(包括安裝包解壓縮文件和編譯生成的庫(kù)文件)只有不到500MB。事實(shí)上編譯完成后安裝包解壓縮文件除了boost目錄之外其他目錄和文件已經(jīng)可以刪除了,這樣還可以騰出150MB的空間來。不過我又研究了一下,其實(shí)libs這個(gè)目錄也很有用,它提供了所有Boost類的使用范例,平時(shí)可以作為參考;另外doc目錄是一個(gè)完整的boost使用幫助文檔,當(dāng)然最好也不要?jiǎng)h了。這樣剩下的幾個(gè)目錄和文件加起來也就十多兆,索性都給它們留一條生路吧。
呵呵,一個(gè)完整而又完美的boost目錄就此誕生了。
如果圖省事,不想了解這么多,那么有簡(jiǎn)單的方法,可以使用命令:
bjam --toolset=msvc-9.0 --build-type=complete
直接指定編譯器以完全模式編譯即可,這樣可以滿足今后的一切使用場(chǎng)合,但同時(shí)帶來的后果是: 1、占用3G以上的硬盤空間 2、占用若干小時(shí)的編譯時(shí)間 3、頭文件和庫(kù)文件存放于C:/Boost(個(gè)人非常反感)
4、生成的很多文件可以永遠(yuǎn)也用不上 四、配置 include目錄:E:/SDK/boost_1_39_0 library目錄:E:/SDK/boost_1_39_0/bin/vc9 添加到IDE相應(yīng)的路徑下面即可。
|