Os: winxp
VS: vs2008
STLport: STLport-5.2.1.tar 下載下傳位址:http://www.stlport.org/download.html
今天在看代碼過程中,偶然看到了STLport開源庫(STLport 是一個多平台的 ANSI C++ 标準類庫實作,具備很多進階特征,并且為效率,異常安全性和線程安全性做了優化,還做了許多擴充,如 hash 表和單鍊。)。覺得需要了解了解,就下載下傳tar包,編譯,安裝,因不熟悉xp環境下vs和相關工具的使用,走了不少彎路,幸運的是最後成功了。現将自己在編譯安裝以及在vs2008環境下的配置過程記錄下來,友善以後的回顧和使用。
First Step:
注意:cmd要用vs2008 工具-》vs2008 Command Prompt
在編譯安裝前要先到C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools,編輯vsvars32.bat,更改相關項(頭檔案和庫檔案)如下圖:

更改後輸入指令:vsvars32.bat 成功後顯示:
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
下載下傳STLport-5.2.1.tar ,解壓到目錄:D:\C++\C++_OpenSource\STLport-5.2.1。
Second Step:
讀README和INSTALL,編譯安裝STLport。
D:\C++\C++_OpenSource\STLport-5.2.1:configure --help
cd build/lib
nmake /fmsvc.mak install
出錯: nmake不是内部指令或外部指令,也不是可運作程式
nmake什麼玩意兒,不知道!百度一下:Microsoft Program MaintenanceUtility,外号NMAKE,顧名思義,是用來管理程式的工具。其實說白了,就是一個解釋程式。它處理一種叫做makefile的檔案(以mak為字尾),解釋裡面的語句并執行相應的指令。我們編寫makefile檔案,按照規定的文法描述檔案之間的依賴關系,以及與該依賴關系相關聯的一系列操作。然後在調用NMAKE時,它會檢查所有相關的檔案,如果目标檔案(target file,下文簡稱target,即依賴于其它檔案的檔案)的time stamp(就是檔案最後一次被修改的時間,一個32位數,表示距離1980年以來經過的時間,以2秒為機關)小于依賴檔案(dependent file,下文簡稱dependent,即被依賴的檔案)的時間辨別(time stamp),NMAKE就執行與該依賴關系相關聯的操作。
實際就是windows下的“make”,進一步搜尋發現該檔案所在目錄:C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\nmake
導緻出錯的原因找到了,沒有将nmake所在的路徑加到系統變量裡。WIN+ BREAK 進階-》環境變量-》系統變量裡path編輯,在末尾添加“;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin” -》reboot
再在D:\C++\C++_OpenSource\STLport-5.2.1\build\lib:nmake /fmsvc.mak install
開始正常編譯,5、6min後,編譯安裝成功。
最後需要将D:\C++\C++_OpenSource\STLport-5.2.1\bin下的 3個dll檔案放到C:\Program Files\Microsoft Visual Studio 9.0\VC\bin目錄下。
Third Step:
在vs2008驗證STLport-5.2.1是否安裝成功。vs:檔案-》建立-》項目-》win32控制台應用程式 輸入項目名字:StlportTest。
// StlportTest.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include <iostream>
#include <rope>
using namespace std;
#define _STLP_USE_STATIC_LIB // 使用 STLport 靜态庫
#define _STLP_USE_DYNAMIC_LIB // 使用 STLport 動态庫
#define _STLP_DEBUG // STLport 啟用 Debug 模式下的檢查功能
#define _STLP_USE_BOOST_SUPPORT // STLport 與 Boost 庫配合使用
int main()
{
crope bigstr1("It took me about one hour ");
crope bigstr2("to plug the STLport into VS2008!");
crope story = bigstr1 + bigstr2;
cout<<story<<endl;
int x;
cin >> x;
return 0;
}
F7運作出錯:fatal error C1083: Cannot open include file: 'rope': No such file or directory
通過一番谷歌百度,發現是隻有編譯安裝,STLport還無法在vc項目中使用,需要配置。
工具-》選項-》項目和解決方案-》VC++目錄 包含檔案 添加頭檔案目錄:D:\C++\C++_OpenSource\STLport-5.2.1\stlport
庫檔案 添加庫檔案目錄:D:\C++\C++_OpenSource\STLport-5.2.1\lib
項目-》StlportTest屬性-》配置屬性-》C/C++-》預處理器-》在預處理器定義添加:;_STLP_DEBUG
F7,成功編譯一個目标檔案:StlportTest
Fourth Step:
輕按兩下C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\StlportTest\Debug\StlportTest
Success!