VS2010编译Boost 1.56

出處:http://blog.csdn.net/kangroger/article/details/39393769

(1)首先下載源代碼:http://softlayer-dal.dl.sourceforge.net/project/boost/boost/1.56.0/boost_1_56_0.zip
解壓到某個目錄,我解壓到了D盤根目錄:D:boost_1_56_0
(2)生成bjam.exe可執行文件
用VS2010命令行
進入到到目錄D:boost_1_56_0,運行booststrap.bat得到:
這時在目錄D:boost_1_56_0生成了b2.exe、bjam.exe、project-config.jam文件。
(3)用bjam.exe編譯
運行命令bjam stage –without-python –toolset=msvc-10.0 –build-type=complete –stagedir=”D:boost_1_56_0binvc10″  link=static runtime-link=shared threading=multi debug release
bjam可以參考http://blog.chinaunix.net/uid-22301538-id-3158997.html
stage表示只生成庫(dll和lib),用install的話還會生成包含頭文件的include目錄。
toolset指定編譯器,VS2010用msvc-10.0。
without/with表示不編譯/編譯哪些庫。
stagedir,當使用stage時用stagedir,使用install用prefix,表示編譯生成文件的路徑。路徑的命名最好和編譯器相關,編譯管理。
link指定生成動態鏈接庫或靜態鏈接庫。生成動態鏈接庫需使用shared方式,生成靜態鏈接庫需使用static方式。
runtime-link,動態/靜態鏈接C/C++運行時庫。有shared和static兩種方式,這樣runtime-link和link一共可以產生4種組合方式。
threading,單/多線程編譯。
debug/release,編譯debug/release版本。一般都是程序的debug版本對應庫的debug版本,所以兩個都編譯。
差不多需要一小時,編譯完成(中間會有警告)。
編譯好後,在根目錄會有個bin.v2文件夾,是編譯過程中的臨時文件夾,很大,可以手動刪除。
(4)在VS中使用Boost庫
新建工程後需要把Boost庫包含到工程中,右鍵選擇屬性,在VC++目錄的“包含目錄”中添加Boost的根目錄,在“庫目錄”添加剛剛編譯生成的位置再加上路徑lib。
 
之後包好頭文件即可使用,例如一個多線程的測試:
  1. #include “boost/thread.hpp”  
  2. #include “iostream”  
  3. using namespace std;  
  4. void threadFunc()  
  5. {  
  6.     cout << “This is a thread function” << endl;  
  7. }  
  8. int main()  
  9. {  
  10.     boost::function<void()> func(threadFunc);  
  11.     boost::thread t(func);  
  12.     t.join();  
  13.     return 0;  
  14. }  
未經允許不得轉載:GoMCU » VS2010编译Boost 1.56