天天看點

STLport開源庫的編譯和Vs2008下的配置

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,更改相關項(頭檔案和庫檔案)如下圖:

STLport開源庫的編譯和Vs2008下的配置

更改後輸入指令: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

STLport開源庫的編譯和Vs2008下的配置

Success!