Ossimplanet编译笔记(VS2008)(转载)
已有 1143 次阅读 2011-11-22 14:08 : 1. 准备工作 下载OSSIM、OSSIMPlanet源代码、依赖库、QT。 Osgeo服务器上有太多优秀的GIS\RS开源工程: http://download.osgeo.org/ 进入OSSIM项目下载相关源码和依赖库。 1.1源代码: http://download.osgeo.org/ossim/src/ (ossim-1.8.4.tgz 10-Mar-2010 05:58 59M) 源代码也可以用svn下载最新的: https://svn.osgeo.org/ossim/trunk/ 1.2依赖库: http://download.osgeo.org/ossim/dependencies/windows_vcexpress2008/ (ossim_dependencies.zip 22-Jul-2009 13:03 1.3G ) 注意:1.3G的依赖库是最全的。Installers目录下有个114M的依赖库是运行依赖库,对于编译来说不够全。 Ossim目录下还有大量的参考文档和示例数据及演示视频。 1.3 QT: Qt libraries 4.6 for Windows (VS 2008, 194 MB)。 http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.1-vs2008.exe 直接安装就行,无需编译QT。 Qt插件(for VS2008, 43.5M)。 http://get.qt.nokia.com/vsaddin/qt-vs-addin-1.1.4.exe 2. 编译 2.1 工程 用VS2008打开项目解决方案:D:\ossim\ossim\projects\vs\solution.sln 目前的版本一共46个项目。可以逐一浏览各个工程,大体知道每个工程的作用。 注意:很多Generated目录下的文件不存在是正常的,这些文件是Qt编译器编译后才能生成的。 2.2 编译环境设置 设置windows环境变量: QT_HOME=C:\Qt\4.6.1 OSSIM_DEPENDENCIES=D:\ossim\ossim_dependencies 当然,系统设置环境变量不是必须的,可以直接设置VC++ Directories,include files: D:\ossim\ossim_dependencies\include C:\Qt\4.6.1\include D:\ossim\ossim_qt4\include D:\ossim\ossim\include 上述include对应的lib设置到library files中。 2.3 编译 上述步骤完成后,对于ossim-1.8.4版本,基本可以编译成功41个项目。对于SVN签出的版本,可能问题比较多。需要手动把几个文件添加到工程中。根据编译器提示进行。比如在编译ossim库的时候,link错误,说是ossimQuickbirdNitfTileSource中虚函数无法实例化,仔细看看,发现实现文件ossimQuickbirdNitfTileSource.cpp没有在工程中。手动添加即可。这样的问题有几处。 2.4 Qt相关工程编译 对于Qt工程ossimQt,需要手动修改编译设置,因为qt生成的.h文件需要用qt的编译器编译。而我们安装的qt路径和版本各不相同,所以需要更新。 右键ossimQtAboutDialogBase.h文件,custom Build Step: Command line: C:\Qt\4.6.1\bin\moc.exe 改成自己QT安装目录。同样,Additional Dependencies改为Qt按照目录。 小技巧:ossimQt工程中一共有几十个.h文件,如果一个个手动更改太费事,用记事本打开: D:\ossim-1.8.4\ossim-1.8.4\ossim_qt4\src\ossimQt.vcproj 把文件中的c:\Dev\Qt\2009.03\qt替换成自己QT安装目录即可。 于是编译Qt的问题解决。 其他几个问题基本都是link的时候找不到lib的问题,有些是lib有前后依赖关系,把这些lib的目录放到工程依赖目录下即可解决。 3. 我在编译中遇到的其他问题 注意:以下这些问题不一定每个人都能遇到。 3.1 error C2471: cannot update program database ' \debug\vc90.pdb' pdb更新错误,是vc2008的经典bug。把debug信息设置为z7兼容ok。 3.2 找不到头文件xrefwrap 找不到xrefwrap等头文件。请安装VS2008的sp1。其实问题3.1,3.2在安装sp1后都消失了。 3.3 找不到各种lib 第一次编译,找不到gpstk.lib、freetype239.lib等库,发现是下载的114M的版本而不是1.3G的版本。 注意:在解压压缩文件的时候,有时会提醒有重复文件,直接全否就行。因为解压时间较长,不要以为出现这个提示时已经解压完成。 4. 调试与运行 确保所有编译生成的dll在同一个输出目录(release和debug目录分开)。 把依赖库中的所有dll拷贝到同一个目录。 把Qt安装文件夹中的dll拷贝到同一个目录。 5. 补充说明: 刚才在OSGeo.org的开发者社区Ossim-developer版面上有人提问为什么没有生成ossimplanet.exe,估计国内开发者也会有人有这样的疑问,看来有必要补充一下。 在编译的文件中没有ossimplanet.exe。这是因为D:\ossim\ossimPlanetQt这个里面的工程不在上述的.sln里面。找到D:\ossim\ossimPlanetQt\ossimPlanetQt.pro文件。这是Qt的工程。在安装了qt插件的vs2008里面,可以直接打开qt工程。由于有了前面的设置,直接编译就能成功生成ossimplanet.exe。2.4节的内容应该也可以用这种方式来编译,因为可以找到D:\ossim\ossim_qt4\ossim_qt4.pro。 如果exe和所有dll生成到同一个目录,那么就可以开始运行、调试和研究ossimplanet了。希望大家能顺利编译得到如下结果。Good luck!