675
技術社區[雲棲]
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庫中文件如下:
上麵幾個目錄中的庫,有點亂,暫時還不太清楚具體區別是什麼,有待進一步了解。
最後生成的庫可在這裏下載:https://download.csdn.net/detail/baiwfg2/7529569
4、最後測試驗證
需要在工程屬性中添加頭文件目錄路徑和生成庫目錄,但不需要指定庫名,因為有auto-link機製
參考網址:
https://www.cnblogs.com/ComputerG/archive/2011/03/10/1979730.html
https://blog.csdn.net/zengraoli/article/details/8870446
另外,源碼內部的網頁幫助文檔很值得一看!
最後更新:2017-04-03 07:57:12