天天看点

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!