一、準備工作:
1.下載 Boost
2.解壓 Boost
3.進入Boost 目錄,運行bootstrap.bat
二、boost::serialization 編譯:
1.開始菜單運行 : Visual Studio 2008 命令提示 ,進入Boost目錄,運行下面的命令:
b2 --toolset=msvc-9.0 --with-serialization --build-type=complete --prefix=c:\boost install
三、boost::python 編譯:
1.下載 Python 安裝版,省去編譯的麻煩(可選,若不安裝python,則python相關的庫將不會被編譯)
2.修改Boost目錄下\tools\build\v2\user-config.jam檔案
# ---------------------# Python configuration.# ---------------------# Configure specific Python version.using python : 3.3 : D:\\Python33 : D:\\Python33\\include : D:\\Python33\\libs;注: 3.3這裡填你安裝的python版本號碼
3.開始菜單運行 : Visual Studio 2008 命令提示 ,進入Boost目錄,運行下面的命令:
b2 --toolset=msvc-9.0 --with-python --build-type=complete --prefix=c:\boost install
四、備忘
編譯參數說明:
1.toolset:表示編譯器工具,我安裝的是VS2010,所以是msvc-10(如果你是VS2005,可以使用msvc-8.0 VS2008是msvc-9.0)
2.architecture:表示架構,也就是你的CPU架構,x86,x64,因為我安裝的是win7 32位,所以使用了x86的架構
3.instruction-set:表示指令集,依然是8086指令集
4.address-model:表示地址長度為32位
5.link:表示產生動態/靜態連結庫,動態連結程式庫是shared,靜態連結庫是static,一般都會編譯成靜態庫,因為給出程式的時候打包boost的庫會非常龐大
6.variant:表示產生的Debug或者release版本,一般情況下會兩種版本都會編譯出來的
7.threading:表示單/多線程編譯,一般我們的程式都會用到多線程,所以選擇了multi
8.runtime-link:表示動態/靜態連結C/C++執行階段程式庫(C/C++ Runtime),我們選擇了動態連結
9.without/with:表示不需要編譯/需要編譯哪些庫,一些自己不用的庫可以無需編譯
10.stage/install:stage表示只產生庫檔案(DLL和Lib),install還會產生包含標頭檔的include目錄,推薦使用stage,因為boost_1_49\boost中就是boost庫完整的標頭檔,所以無需再拷貝一份出來。編譯出來的庫會放在stage檔案夾中
這樣一份完整的boost庫就產生了,剩下就是直接使用到項目中了。
其實編譯的具體命令都是可以自己寫的。如果你需要編譯所有。只需要使用下面的這行代碼
b2 –toolset=msvc-10.0 –build-type=complete
就可以了
命名規則說明:
Boost官網的《Geting Started On Windows》(http://www.boost.org/doc/libs/1_38_0/more/getting_started/windows.html)提到了Boost庫的命名規則,摘錄如下:
以 libboost_regex-vc71-mt-d-1_34.lib 為例: lib
首碼:除了Microsoft Windows之外,每一個Boost庫的名字都以此字串開始。在Windows上,只有普通的靜態庫使用lib首碼;匯入庫和DLL不使用。 boost_regex
庫名稱:所有boost庫名檔案以boost_開頭。 -vc71
Toolset 標記:標識了構建該庫所用的toolset和版本。 -mt
Threading 標記:標識構建該庫啟用了多線程支援。不支援多線程的庫沒有-mt。 -d
ABI標記:編碼了影響庫和其他編譯代碼互動的細節。對於每一種特性,向標記中添加一個字母:
| Key |
Use this library when: |
| s |
靜態連結到C++標準庫和編譯器運行時支撐庫 |
| g |
使用標準庫和運行時支撐庫的調試版本 |
| y |
使用Python的特殊調試構建 |
| d |
構建代碼的調試版本 |
| p |
使用STLPort標準庫而不是編譯器提供的預設庫 |
| n |
使用STLPort已被棄用的“native iostreams” |
-1_34
版本戳記:完整的Boost發布號,底線代替點。例如,1.31.1版本將被標記為“-1_31_1”。 .lib
副檔名:取決於作業系統。在大多數unix平台上,.a是靜態庫,.so是共用庫。在Windows上,.dll表示共用庫,.lib是靜態或匯入庫。
下表是對Regex庫編譯後的檔案名稱:
| 檔案名稱 |
含義 |
編譯使用該庫的程式時應使用的編譯選項 |
| libboost_regex-vc90-mt-sgd-1_38.lib |
靜態庫,多線程,調試版本 使用靜態調試版本C執行階段程式庫(LIBCMTD.LIB和LIBCPMTD.LIB) |
/MTd |
| libboost_regex-vc90-mt-s-1_38.lib |
靜態庫,多線程 使用靜態版本C執行階段程式庫(LIBCMT.LIB和LIBCPMT.LIB) |
/MT |
| libboost_regex-vc90-mt-gd-1_38.lib |
靜態庫,多線程,調試版本 使用動態調試版本C執行階段程式庫(MSVCRTD.LIB和MSVCPRTD.LIB) |
/MDd |
| libboost_regex-vc90-mt-1_38.lib |
靜態庫,多線程 使用動態版本C執行階段程式庫(MSVCRT.LIB和MSVCPRT.LIB) |
/MD |
| boost_regex-vc90-mt-gd-1_38.lib |
匯入庫(boost_regex-vc90-mt-gd-1_38.dll),多線程,調試版本 |
|
| boost_regex-vc90-mt-1_38.lib |
匯入庫(boost_regex-vc90-mt-1_38.dll)多線程 |
|