Ossimplanet编译笔记(VS2008)(转载)
Ossimplanet编译笔记(VS2008)(转载)
已有 1143 次阅读 2011-11-22 14:08 标签: Ossimplanet Ossim1. 准备工作
下载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!
下载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!
饮水思源,不忘初心。
要面包,也要有诗和远方。