boost-1.53源碼編譯

1、下載源碼。首先得明白,boost大多數庫都只有頭文件,鏈接時不需Lib文件;以下庫需要單獨編譯成庫:

Boost.Filesystem
Boost.GraphParallel
Boost.IOStreams
Boost.MPI
Boost.ProgramOptions
Boost.Python
Boost.Regex
Boost.Serialization
Boost.Signals
Boost.System
Boost.Thread
Boost.Wave

下面幾種是可選的:

Boost.DateTime 
Boost.Graph 
Boost.Math 
Boost.Random
Boost.Test

2、打開VS2012命令行窗口,進入源碼目錄,首先執行bootstrap.bat

3、用bjam或b2編譯。我採用的命令是:

b2 --toolset=msvc-11.0 --build-type=complete --build-dir="d:\result" stage


關於一些選項的解釋:

stage/install:stage表示只生成庫(dll和lib),install還會生成包含頭文件的include目錄。

toolset:指定編譯器,可選的如borland、gcc、msvc-11.0(VS2012)等。

without/with:選擇不編譯/編譯哪些庫。

stagedir/prefix:stage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。

build-dir:編譯生成的中間文件的路徑,編譯完成後可將這個目錄全部刪除。

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版本,所以兩個都編譯。

由於我沒有指令stagedir,所以默認在源碼目錄下生成stage目錄,大致如下圖:


注意對某一種類型的庫而言,有2個dll,2個lib,分別來自編譯目錄中的debug\threading-multi和release\threading-multi,還有其它lib,dll並沒有在生成的庫中。其中間編譯目錄result如filesystem庫中文件如下:


上面幾個目錄中的庫,有點亂,暫時還不太清楚具體區別是什麼,有待進一步瞭解。

最後生成的庫可在這裏下載:http://download.csdn.net/detail/baiwfg2/7529569

4、最後測試驗證

需要在工程屬性中添加頭文件目錄路徑和生成庫目錄,但不需要指定庫名,因爲有auto-link機制


參考網址:

http://www.cnblogs.com/ComputerG/archive/2011/03/10/1979730.html

http://blog.csdn.net/zengraoli/article/details/8870446

另外,源碼內部的網頁幫助文檔很值得一看!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章