天天看點

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

 http://blog.csdn.net/ymsdu2004/article/details/6321259

一、  從Source編譯安裝STLPort:

1、  下載下傳源代碼:官網http://www.stlport.org/,最新穩定版為5.2.1。

2、  解壓源檔案到本地硬碟,我解壓到C槽,解壓後的STLPort目錄為C:/STLport5.2.1

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

3、  編譯工具我選擇VS2008,運作“Visual Studio 2008 Command Prompt”。

4、  執行指令 cd C:/STLport5.2.1進入STLPort的根目錄“C:/STLport5.2.1”。

5、  執行指令configure msvc9配置編譯環境。

6、  執行指令cd C:/STLport5.2.1/build/lib。

7、  執行指令nmake -f msvc.mak clean install

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

一切OK…需要執行的步驟全部結束,隻需再耐心等待幾分鐘的編譯時間!編譯完成後在STLPort主目錄C:/STLport5.2.1下面比之前多出了bin和lib兩個檔案夾,所有編譯産生的*.dll和*.lib檔案都已經自動複制到了這兩個檔案夾下面,同時C:/STLport5.2.1/build/lib目錄下産生的obj檔案夾則可以删除,以免占有同不必要的硬碟空間(多達318M)。

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

二、  從Source編譯安裝Boost

boost有些庫是不用編譯安裝的,僅需包含頭檔案庫就行了。但有些庫(如thread,regex)則因為需要根據不同的系統做不同的調整,是以必須編譯後方能使用,是以可以根據自己具體需要用什麼庫來單獨進行某個庫的編譯。為了省事,我選擇将那些需要編譯的庫全部編譯,以下就是編譯安裝的具體步驟:

1、  下載下傳源代碼:官網http://www.boost.org/最新穩定版為1.46.1。

2、  解壓源檔案到本地硬碟,我解壓到C槽,解壓後的Boost目錄為C:/boost1.46.1

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

3、  編譯工具我選擇VS2008,運作“Visual Studio 2008 Command Prompt”。

4、  編譯bjam工具:

l   執行指令cd C:/boost1.46.1進入Boost主目錄。

l   執行指令bootstrap.bat運作批處理檔案,生成了bjam.exe工具

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記
VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

5、  修改Boost配置檔案:

l   進入檔案夾“C:/boost.1.46.1/tools/build/v2”用記事本打開檔案“user-config.jam”。

l   找到檔案中的“MSVC configuration”, 将# using msvc : 8.0 ;修改為using msvc : 9.0 ;(注意修改的内容:去掉#,同時根據自己的編譯器修改參數8.0,我的編譯器是9.0,故改為9.0)。

l   找到檔案中的“STLPort configuration”,将“# using stlport : : /usr/include/stlport /usr/lib ;”修改為“using stlport : 5.2.1 : "C:/STLport5.2.1/src" : "C:/STLport5.2.1/lib" ;”

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

6、  執行指令bjam --toolset=msvc --build-type=complete stdlib=stlport stage。通過bjam.exe工具編譯Boost。

歐拉!當你看到下面的螢幕顯示時,基本沒有問題了,該幹嘛幹嘛去,要耐得住性子,編譯時間是相當的可觀(我的機器下編譯花了半個多小時…)。編譯完成後,得到的庫檔案都預設便宜到檔案夾bin.v2中,這是預設的,在通過bjam編譯的時候可一更改該選項。

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記
VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

三、  使用Boost之前對VS2008環境的配置

1、  配置VC9的目錄選項:打開Tools->Options,進入“Projects and Solutions”的“VC++Directories”頁,在“Show directories for”下面選擇“Include files”,在其中加入C:/boost1.46.1和C:/STLport5.2.1,并調整到最前面。選擇“Liabrary files”,在其中加入C:/STLport5.2.1/lib和C:/boost_1_46_1/bin.v2/libs(注意,上文提到過很多庫不需要編譯就可以使用,這個庫的包含是針對那些用到需要編譯的庫如regex的人而言的)。

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記
VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

2、  針對具體工程時,要設定必要的工程屬性:

打開菜單Project->…Properties,在“C/C++”的“Preprocessor”頁的“Preprocessor definition”中添加宏_STLP_DEBUG和__STL_DEBUG

所有的準備工作已經完成,現在就可以完全進入Boost的世界了!

四、 使用舉例

[cpp]  view plain copy

  1. // main.cpp  
  2. // Boost+STLport Test  
  3. // Yangming  
  4. // 2011.04.12-...  
  5. #include "boost/timer.hpp"   
  6. #include <iostream>  
  7. using namespace boost;  
  8. using namespace std;  
  9. int main()  
  10. {  
  11.     timer t; //構造一個計時器對象  
  12.     cout<<"max timespan:"<<t.elapsed_max()/3600<<"h"<<endl; //定時器最大計時  
  13.     cout<<"min timespan:"<<t.elapsed_min()<<"s"<<endl;      //定時器最小計時(分辨率)  
  14.     cout<<"now time elapsed:"<<t.elapsed()<<"s"<<endl;      //從計時器對象建構至今過了多長時間  
  15.     return 0;  
  16. }  

運作結果:

VS2008+Boost 1_46_1+STLPort-5.2.1安裝及使用配置手記

 ========================================================================================================

修改:2013/09/01重新編譯,boost版本變為boost_1_54_0,STLport版本任然不變,發現按照執行指令bjam –-toolset=msvc –-build-type=complete stdlib=stlport stage指令編譯會出很多錯誤,通過很長時間的摸索,發現修改為執行指令b2 –-toolset=msvc –-build-type=complete stage就OK了, boost編譯真心讓人不省心啊!

另外,編譯速度極度緩慢,我用了大概一個小時以上,完成後發現整個檔案夾有10多個G,編譯完成後,将會生成bin.v2目錄和stage目錄。bin.v2是編譯生成檔案的中間目錄,stage是最終生成的dll和lib相應的目錄,如果你硬碟不夠大的話建議删除bin.v2,不過下次你再編譯的時候還得等上和第一次一樣長的時間。

五、 參考資料:

1、《Boost程式庫完全開發指南-深入C++準标準庫》--羅建峰。

2、Boost官方文檔: http://www.boost.org/doc/libs/1_46_1/more/getting_started/windows.html。

3、玄冬的部落格: http://blog.chinaunix.net/space.php?uid=24352482&do=blog&id=77047。