Boost學習總結(一)VS2010環境下編譯STLport和Boost

Boost學習總結(一)VS2010環境下編譯STLport和Boosthtml

Boost簡介

Boost庫是一個功能強大、構造精巧、跨平臺、開源而且徹底免費的C++程序庫。1998年,Beman G.Dawes(C++標準委員會成員之一)發起倡議並創建了Boost社區,目的是向C++程序員提供免費的、同行審查、可移植的高質量C++源程序庫。Boost涵蓋了字符串與文本處理、容器、迭代器、算法、圖像處理、模板元編程、併發編程等等,使用Boost,將大大加強了C++的功能和表現力。python

STLport是什麼?

STLport是一個徹底符合C++98標準的一個免費的C++標準庫實現。STLport具備不少其餘STL實現所沒有的優勢。首先是高度的可移植性,能夠配合市面上幾乎全部的操做系統和編譯器使用,使開發的程序可以在不一樣的編譯平臺上得到一致的標準庫實現。其次是性能表現優秀。第三個優勢是在標準以外增長了若干有用的擴展,如rope(加強的字符串類)、slist(單鏈表數據結構)、hash_map(散列映射容器)以及支持線程安全。ios

接下來,咱們就將STLport和Boost安裝並學習使用這兩個庫。程序員

安裝VS2010

首先第一步,咱們下載安裝visual studio 2010。下載戳這裏:visual studio 2010算法

安裝步驟以下:編程

首先解壓壓縮包,須要幾分鐘的時間,而後雙擊setup.exe.安全

 

最後的安裝得須要三十分鐘左右,安裝完成以後還會彈出一兩個窗口,就不須要管了,直接各類取消之。數據結構

編譯STLport

下載STLport地址在這裏:http://sourceforge.net/projects/stlport/多線程

我選擇的是STLport-5.2.1版本,下載的是壓縮包STLport-5.2.1.tar.bz2。和Boost同樣,咱們須要對其解壓、編譯以後才能使用這個庫。併發

在【開始】菜單裏打開vistual studio 2010下子文件vistual studio tools文件裏的vistual studio命令提示(2010)。

 

第一步:執行E:\C++\STLport-5.2.1(這裏我是以個人安裝路徑爲準),進入了STLport目錄;

第二步:configure msvc9(雖然咱們安裝的10版本,好像msvc10不行),配置編譯環境;

第三步:執行cd build\lib;

第四步:執行命令nmake -f msvc.mak clearn install。

等待數分鐘以後就能夠了,這裏由於我以前安裝的時候忘記截圖了,因此就沒有辦法給出圖片顯示,若是編譯不成功的話,能夠按照下面的方法改之。(這是我在網上找到的解決方法)

目前爲止,應該把STLport編譯成功了吧,呆會兒等編譯Boost完成以後,一塊兒來對這兩個庫進行測試。

編譯Boost

下載Boost的官方網址:www.boost.org。可是打開速度太慢了,索性就在網上找到了壓縮包boost_1_56_0.7z,而後解壓就能夠了。

 

雙擊以後,咱們會獲得四個文件,其中有兩個文件就是上圖中所看到的b2.exebjam.exe

注意:接下來的編譯須要一個小時左右的時間,這是一個很蛋疼的事情。

而後打開VS的命令提示窗口,運行bjam stage --without-python --toolset=msvc-10.0 --build-type=complete --stagedir="E:\C++\boost_1_56_0\bin\vc10"  link=static runtime-link=shared threading=multi debug release

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

在VS2010中測試STLport和Boost

咱們運用VS10新建一個工程以後,右擊工程名,選擇屬性,在VC目錄裏咱們把Boost和STLport加入到這個工程裏面去。

包含目錄:E:\C++\boost_1_56_0;$(IncludePath);E:\C++\STLport-5.2.1\stlport;$(IncludePath)

庫目錄:E:\C++\boost_1_56_0\bin\vc10\lib;$(LibraryPath);E:\C++\STLport-5.2.1\lib;$(LibraryPath);

這個根據本身的路徑改一下就能夠了,緊接着編寫代碼測試。

 1 #include<iostream>
 2 #include<boost/thread.hpp>
 3 using namespace std;
 4 
 5 void threadFunc() {
 6     cout<<"This is a Thread function."<<endl;
 7 }
 8 
 9 int main() {
10     boost::function<void()> func(threadFunc);
11     boost::thread t(func);
12     t.join();
13     return 0;
14 }

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<algorithm>
 7 #include<rope>
 8 #define inf 0x7fffffff
 9 using namespace std;
10 
11 int main() {  
12     // crope是用來存儲char字符的容器   
13     crope crope1("Hello,");
14     crope crope2("STLport!");
15     cout<<crope1+crope2<<endl;
16     cout<<"BaiYiShaoNian"<<endl;
17     return 0;
18 }  

相關文章
相關標籤/搜索