VS2010 Boost編譯安裝

2021-06-10 17:17:36 字數 2827 閱讀 5644

2.解壓縮到d:\boost 目錄下

3.編譯bjam 

(1)從vs2010的工具選單進入命令提示視窗(單擊「開始」按鈕,指向「所有程式」,指向「microsoft visual studio 2010」,指向「visual studio tools(工具)」,然後單擊「visual studio 2010 command prompt(命令提示)」  

(2)cd到d:\boost\boost_1_46_0下執行bootstrap.bat,然後,會在d:\boost\boost_1_46_0\下生成bjam.exe

4.設定編譯環境(如果想去掉編譯警告需要修改)   

修改user-config.jam (d:\boost\boost_1_46_0\tools\build\v2\user-config.jam) 的msvc configuration 

# msvc configuration 

# configure msvc (default version, searched for in standard locations and path). 

# using msvc ;

using msvc : 10.0 : : /wd4819 /d_crt_secure_no_deprecate /d_scl_secure_no_deprecate /d_secure_scl=0 ;

5.將目錄cd到d:\boost\boost_1_46_0\下執行  

(1) 編譯boost庫  

bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="d:\boost\boost_1_46_0\bin\vc10" (這一步需要等待很長時間,大概乙個小時左右……)

下面詳細解釋一下每個引數的含義: 

stage/install:stage表示只生成庫(dll和lib),

install還會生成包含標頭檔案的include目錄。

toolset:指定編譯器,可選的如borland、gcc、msvc(vc6)、msvc-10.0(vs20010)等。

without/with:選擇不編譯/編譯哪些庫。

stagedir/prefix:stage時使用stagedir,install時使用prefix,表示編譯生成檔案的路徑。推薦給不同的ide指定不同的目錄,如vs2010對應的是d:\boost\boost_1_46_0\bin\vc10,否則都生成到乙個目錄下面,難以管理。

build-dir:編譯生成的中間檔案的路徑。這個本人這裡沒用到,預設就在根目錄(d:\boost\boost_1_46_0)下,目錄名為bin.v2(刪掉),等編譯完成後可將這個目錄全部刪除(沒用了),所以不需要去設定。

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版本,所以兩個都編譯。

執行完後(彈出輸入提示符)  

6.設定vs2010環境。(注:在2010環境下這步,在專案-->右鍵屬性-->vc++ directories 中去填寫對應路徑 )

修改環境變數:$(boost):  d:\boost\boost_1_46_0 

tools -> options -> projects and solutions -> vc++ directories  

在library files加上$(boost)\bin\vc10\lib

在include files加上$(boost)

使用舉例:

#include

此時,不用包含庫檔案,boost的auto-link機制將會自動幫我們包含對應的靜態lib。也就是說,boost預設是以靜態方式鏈結的,這樣我們的工程屬性最好也設為multi-threaded (debug)。如果想使用dll動態方式鏈結,需要預先定義巨集:

#define boost_all_dyn_link

同樣,此時boost也會預設幫我們包含對應的lib。如果不想使用boost提供的auto-link機制,或者對它的自動鏈結不太放心的話(其實大可不必擔心),可以預先定義巨集:

#define boost_all_no_lib

#pragma comment(lib, "boost_thread-vc100-mt-1_46.lib")或

#pragma comment(lib, "boost_thread-vc100-mt.lib")

這兩個lib其實是一樣的,實在不明白boost編譯時為什麼每個庫都要複製乙份,難道是因為後者在公升級boost版本後不用改**?另外還有乙個比較有用的巨集:

#define boost_lib_diagnostic

它可以讓vc在編譯時的output視窗中輸出程式具體鏈結了哪些boost庫以及鏈結順序。

關於boost的auto-link機制,詳細可以看看boost\config\auto_link.hpp裡的**,很容易可以讀懂,並且值得我們學習。

VS2010 Boost編譯安裝(原)

簡單的 他人,而沒有深入的學習,簡直就是對他人的不負責!對看到我這篇文章而去浪費1個多小時編譯的朋友說聲抱歉!2.解壓縮到d boost 目錄下 3.編譯bjam 1 從vs2010的工具選單進入命令提示視窗 單擊 開始 按鈕,指向 所有程式 指向 microsoft visual studio 2...

VS2010下安裝boost庫

2.我放在d cpp目錄下 解壓到當前資料夾 3.開啟vs2010 vs tools vs命令提示 4.cd d cpp boost 1 46 1 5.輸入bootstrap,便生成bjam.exe檔案 6.輸入bjam toolset msvc 10.0 variant debug,release...

VS2010下安裝boost庫

2.我放在d cpp目錄下 解壓到當前資料夾 3.開啟vs2010 vs tools vs命令提示 4.cd d cpp boost 1 46 1 5.輸入bootstrap,便生成bjam.exe檔案 6.輸入bjam toolset msvc 10.0 variant debug,release...