1. 程式人生 > >vs2013 boost庫編譯小結

vs2013 boost庫編譯小結

#編譯bjam:
首先從SourceForge上下載Boost庫的壓縮包,此時的最新版為1.57.0,下載地址為http://nchc.dl.sourceforge.net/project/boost/boost/1.57.0/boost_1_57_0.7z;下載後,解壓縮7z包。然後以管理員方式在命令提示符下執行bootstrap.bat批處理檔案,執行後會在當前目錄中出現bjam.exe檔案。
#編譯boost庫  32位編譯:
#從開始選單啟動Visual Studio 2013的vs2013 命令列,進入boost所在目錄,執行bootstrap.bat
編譯命令:
bjam.exe stage --toolset=msvc-12.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-serialization --without-wave --without-test --without-program_options --without-serialization --without-signals --stagedir="vc12_x86" link=static runtime-link=shared threading=multi debug release
#toolset:指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-10.0(VS20010)
#vs2008 : msvc-9.0,vs2010 : msvc-10.0, VS2012、VS2013是msvc-12.0
#stagedir:表示編譯生成檔案的路徑。
#build-dir:編譯生成的中間檔案的路徑。這個本人這裡沒用到,預設就在根目錄(D:\boost\boost_1_57_0)下,目錄名為bin.v2(刪掉),等編譯完成後可將這個目錄全部刪除(沒用了),所以不需要去設定。
#without/with:選擇不編譯/編譯哪些庫。
#address-model:要有address-model=64屬性,如果沒有這個屬性的話,會預設生成32位的平臺庫,加入這個選項才能生成64位的DLL。
#threading:單/多執行緒編譯。一般都寫多執行緒程式,當然要指定multi方式了;如果需要編寫單執行緒程式,那麼還需要編譯單執行緒庫,可以使用single方式。
#靜態庫版link=shared,動態庫link=shared
#runtime-link:動態/靜態連結C/C++執行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式,各人可以根據自己的需要選擇編譯。一般link只選static的話,只需要編譯2種組合即可,即link=static runtime-link=shared和link=static runtime-link=static。
#debug/release:編譯debug/release版本。一般都是程式的debug版本對應庫的debug版本,所以兩個都編譯。
#64位編譯:
從開始選單啟動Visual Studio 2013的vs2013 x64相容工具命令列,然後轉到boost根資料夾,執行bootstrap.bat生成x64版的bjam.exe。
在編譯命令中加入address-model=64屬性
#還有人總結windows下boost庫的命名特點:

link=static runtime-link=static 得到 libboostxxxxx.lib
link=shared runtime-link=shared 得到 boostxxxx.lib 和 boostxxxx.dll
由以上的資料夾層次結構基本就可以得出結論:
1、以“lib”開頭的是“link-static”版本的,而直接以“boost”開頭的是“link-shared”版本的。
2、有“d”的為debug版本,沒有的則是release版本。
3、有“s”的為“runtime-link-static”版本,沒有的則是“runtime-link-shared”版本。
4、有“mt”的為“threading-multi”版本,沒有的則是“threading-single”版本。
#設定vs2013環境。

(在專案-->右鍵屬性-->C/C++)附加包含目錄:如:F:/boost_1.57_0
連結器:附加庫目錄:(編譯生成檔案的路徑)如:F:/boost_1.57_0/stage/bin
附加依賴項:(專案所需編譯庫)
如果編譯成Debug則包含:libboost_regex-vc120-mt-gd-1_57.lib(舉例)
如果編譯成Release則包含:libboost_regex-vc120-mt-1_57.lib