VS2013下Boost1.68的編譯

/*******************************************************************

boost的編譯

********************************************************************/

1.前往https://www.boost.org/users/download/下載boost1.68源碼,對其進行解壓,比如解壓至D:\Boost,如圖所示

 

2.用管理員身份打開vs2013的開發人員命令提示,如圖所示

 

3.定位至對應的boost目錄下,比如我的目錄在D:\Boost\boost_1_68_0,則可以通過如圖定位,通過輸入bootstrap.bat命令,我們可以在boost目錄裏生成b2.exe 、bjam.exe 、project-config.jam 、bootstrap.log四個文件。其中,b2.exe 、bjam.exe 這兩個exe作用是一樣的,bjam.exe 是老版本,b2是bjam的升級版本。

 

3.這裏需要注意的時vs2013的版本必須要到update5,update4未嘗試,不然在進行編譯的時候會有部分庫無法生成,比如thread和chrono,更新打開vs2013右上角的小旗子裏會有說明,點開update5的選項就可以下載更新。

然後我們繼續輸入如下命令進行編譯,

bjam stage --toolset=msvc-12.0 --without-python --stagedir="D:\Boost\boost_1_68_0\bin\vc12" link=static runtime-link=shared runtime-link=static threading=multi debug release 

(1)stage/install:

stage表示只生成庫(dll和lib),install還會生成包含頭文件的include目錄。本人推薦使用stage,因爲install生成的這個include目錄實際就是boost安裝包解壓縮後的boost目錄(D:\boost\boost_1_60_0,只比include目錄多幾個非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套頭文件,這樣既節省編譯時間,也節省硬盤空間。

(2)toolset:

指定編譯器,可選的如borland、gcc、msvc(VC6)、msvc-9.0(VS2008)等,VS2013對應msvc-12.0。

(3)without/with:

選擇不編譯/編譯哪些庫。因爲python、mpi等庫我都用不着,所以排除之。還有wave、graph、math、regex、test、program_options、serialization、signals這幾個庫編出的靜態lib都非常大,所以不需要的也可以without掉。這可以根據各人需要進行選擇,默認是全部編譯。但是需要注意,如果選擇編譯python的話,是需要python語言支持的,應該到python官方主頁http://www.python.org/下載安裝。

查看boost包含庫的命令是bjam --show-libraries

(4)stagedir/prefix:

stage時使用stagedir,install時使用prefix,表示編譯生成文件的路徑。推薦給不同的IDE指定不同的目錄,如VS2008對應的是E:\SDK\boost\bin\vc9,VC6對應的是E:\SDK\boost\bin\vc6,否則都生成到一個目錄下面,難以管理。如果使用了install參數,那麼還將生成頭文件目錄,vc9對應的就是E:\SDK\boost\bin\vc9\include\boost-1_46\boost,vc6類似(光這路徑都這樣累贅,還是使用stage好)。

(5)build-dir:

編譯生成的中間文件的路徑。這個本人這裏沒用到,默認就在根目錄(E:\SDK\boost)下,目錄名爲bin.v2,等編譯完成後可將這個目錄全部刪除(沒用了),所以不需要去設置。

(6)link:

生成動態鏈接庫/靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用static方式。一般boost庫可能都是以static方式編譯,因爲最終發佈程序帶着boost的dll感覺會比較累贅。

(7)runtime-link:

動態/靜態鏈接C/C++運行時庫。同樣有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式,各人可以根據自己的需要選擇編譯。

(8)threading:

單/多線程編譯。一般都寫多線程程序,當然要指定multi方式了;如果需要編寫單線程程序,那麼還需要編譯單線程庫,可以使用single方式。

(9)debug/release:

編譯debug/release版本。一般都是程序的debug版本對應庫的debug版本,所以兩個都編譯。

(參考:http://www.cnblogs.com/zhcncn/p/3950477.html

 

4.編譯的時間較長,完成編譯後,會在boost_1_68_0\bin\vc12裏生成相應的lib文件,其中在boost_1_68_0目錄裏面會有一個bin.v2文件夾,此文件夾爲編譯時的臨時文件夾,我們直接將其刪去,然後在上一目錄中,也就是Boost文件夾中,將bin\vc12中的lib文件夾剪切至該文件夾,並且在該文件夾中新建include文件夾,將boost_1_68_0剪切至此,並改名boost,整個文件的結構爲根目錄Boost,其中擁有include和lib兩個子文件夾,lib爲我們編譯的庫文件,而include裏爲原來的原始boost文件夾,如圖所示。

 

5.環境變量的配置,由於我的Boost目錄爲D:\Boost因此如此設置

path中

 

 

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