Windows下編譯boost庫

需要編譯的boost庫

以下的庫必須單獨編譯:

Boost.Chrono Boost.System
Boost.Context Boost.ProgramOptions
Boost.Filesystem Boost.Python
Boost.GraphParallel Boost.Regex
Boost.IOstreams Boost.Serialization
Boost.Locale Boost.Signals
Boost.Log Boost.Thread
Boost.MPI

Boost.Timer

Boost.Wave

具有可選的單獨編譯的一些庫:

Boost.DateTime

有一個二進制組件,在使用其to_string/from_string或序列化功能時才需要

Boost.Graph

有一個二進制組件,在您打算分析GraphViz文件時才需要

Boost.Math

具有TR1和C99 cmath函數的二進制組件

Boost.Random

有一個二進制組件,在你使用random device時需要它。

Boost.Test

可以在“僅標題”或“單獨編譯”模式下使用,雖然單獨編譯建議嚴格使用。

Boost.Exception

爲32位MSC_VER==1310和_MSC_VER==1400提供了非浸入性的exception_ptr實現,它需要一個單獨編譯的二進制文件,由BOOST_ENABLE_NON_INTRUSIVE_EXCEPTION_PTR啓用

編譯步驟:

打開cmd命令窗口,找到boost目錄,運行命令:booststrap.bat

命令運行完畢後boost目錄產生下列文件:

使用bjam.exe(或b2.exe)來編譯boost,這兩個exe作用是一樣的,bjam.exe是老版本,b2是bjam的升級版本

例如:

bjam stage --toolset=msvc-9.0 --without-python --stagedir="E:\Sdk\boost\bin\vc9" link=static runtime-link=shared runtime-link=static threading=multi debug release

bjam參數說明:

stage/install

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

--toolset

指定編譯器,可選的如borland、gcc、msvc(vc6)、msvc-9.0(vs2008)等。

--stagedir=<stagedir>

存放編譯後庫文件的路徑,默認是stage

--bulid-type=complete

編譯所有版本,不然只會編譯一小部分版本(相當於:variant=release,threading=multi;link=shared|static;runtime-link=shared)

--without

--with

選擇不編譯/編譯哪些庫,如輸入--with-regex就只編譯regex庫,默認是全部編譯,顯示需要編譯的庫名稱命令bjam --show-libraries.

--build-dir

編譯的臨時文件會放在builddir裏(編譯完就可以把它刪除了)

link=static|shared

使用靜態庫還是動態庫

threading=single|multi

使用單線程還是多線程庫

runtime-link=static|shared

是靜態還是動態鏈接c/c++標準庫

bjam編譯:

如果想使用默認配置,則直接在cmd執行以下命令:b2.exe,大約經過30分鐘的時間,編譯成功如下:

庫命名規則說明:

lib:在windows上,只有普通的靜態庫使用lib前綴;導入庫和DLL不使用

boost_XXX:所有boost庫名文件以boost_xxx開頭

-vc142:toolset標記;標識了構建該庫所用的toolset和版本

-mt:threading標記;標識構建該庫啓用了多線程支持,不支持多線程的庫沒有-mt。

g:使用標準庫和運行時支撐庫的調試版本

d:構建代碼的調試版本

s:靜態鏈接到C++標準庫和編譯器運行時支撐庫

y:使用Python的特殊調試構建

p:使用STLPort標準庫而不是編譯器提供的默認庫

n:使用STLPort已被棄用的“native iostreams”

-1_67:版本標記;完整的boost發佈號,下劃線代替點

.lib:擴展名:取決於操作系統,在大多數unix平臺上,.a是靜態庫,.so是共享庫。在Windows上,.dll表示共享庫,.lib是靜態庫或導入庫。

VS配置庫目錄:

右鍵項目-》屬性:

指定附加依賴項:

或者使用命令:

#pragma comment(lib, "libboost_date_time-vc142-mt-x32-1_67.lib")

 

 

 

 

 

 

 

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