OSG OSGearth vs2010编译

来源:互联网 发布:tensorflow theano 编辑:程序博客网 时间:2024/06/10 22:33

图片显示不了,查看原贴:http://weibo.com/p/2304189447a8480102v2c2

写在前面,由于突然要用到OSGearth,但OSGearth的编译过程对于外行而言简直复杂,参照前辈们的方法,研究了两天,晚上终于顺利通过了编译。回想过程,其实都是由于对原理不理解而产生的细节错误(编译原理一类的,当然,我一个学地理的,现在还是不理解)。所以在此,我把过程中遇到的一些问题都写下来,供和我一样刚入门的同志们参考。

-----------------------------------------------------------------------------------------------------------------
感谢array,freesouth,ago对中国osg的贡献~
-----------------------------------------------------------------------------------------------------------------

  • 资源准备
为了方便,我直接把资源打包了,大家直接下载即可,但是建议还是登陆相关网站下载稳定版本。
http://pan.baidu.com/s/1qW9a4zU

除此之外,还要下载安装cmake,http://www.cmake.org/download/

  • 编译Open Scene Graph
1.在E盘建一个OSG文件夹,存放编译好的文件
2.在E盘建一个OSG_Make文件夹,供编译过程使用
3.将OpenSceneGraph-3.0.1.zip解压到OSG_Make(我的是E:/OSG/OpenSceneGraph),
  将3rdParty_VC10_x86_x64.zip解压到
 OSG_Make(3rdParty中有x64和x86版本,我的机器是64位就用的是x64,结果编译出现了问题,原因我不清楚,为了方便,建议用x86)
4.在OSG文件夹建立一个
3rdParty文件夹,将x86中的include,lib,bin文件都复制进去(感觉麻烦,其实是为了后面方便)
在OSG文件夹建立一个
OpenSceneGraph文件夹
5.OpenSceneGraph-3.0.1文件夹下的所用文件复制到找到E:/osg/OpenSceneGraph/,打开CMake-gui.exe,CMakeLists.txt,直接拖到CMake中,并设置文件地址,将编译地址设置为E:/osg/OpenSceneGraph/vs2010

点击configure,选择visual studio10


6.设置参数
ACTUAL_3RDPARTY_DIR值:E:/OSG/3rdParty;
BUILD_OSG_EXAMPLES值: ON
BUILD_MFC_ EXAMPLE:ON
CMAKE_INSTALL_PREFIX值:E:/osg/OpenSceneGraph/vs2010
点击configure
注意:这里尤为关键,第一次编译时我在这里出错,导致编译后字体显示不正常,png无法加载
点击configure后,注意查看如下参数是否有值

这里表示OSG的png插件,如果没有的话之后将无法载入png,请查看ACTUAL_3RDPARTY_DIR是否配置正确,再configure,或者只能手动配置,同理,检查TIFF,curl,gif,opengl等,当然还有许多值是NOT-FOUND状态,不用理会,只要保证一些基本的插件配置正确即可。

7.点击generate,生成vs2010工程,在generatedone后,可在E:/osg/OpenSceneGraph/vs2010下看到工程

8.打开OpenScenGraph.sln进行编译
生成->批生成,勾选ALL-BUILD的Debug和Release版本,进行生成
至此,可以休息一下了,OpenSceneGraph的编译时间大概为3-6个小时,这就到了考验人品的时候,我最近一次用了2个小时10分钟~
9.配置环境
相信这一步大家都不陌生,为PATH路径到编译好的bin,文中位置应该是
E:/osg/OpenSceneGraph/vs2010/bin,当然也可以将E:/osg/OpenSceneGraph/vs2010中的bin,lib,include复制到自己觉得方便的位置,将bin路径添加到进去(我把bin,lib,include复制到了E:/osg/OpenSceneGraph中)
再将OpenSceneGraph-data-3.0.0.zip解压到E:/osg/OpenSceneGraph-data-3.0.0中,在系统变量中添加
OSG_FILE_PATH,将路径指向这里

10.调试,在cmd中输入如下命令行



在次环境下按下s键可测试帧数,及字体是否显示正常。如果配置正确,esc后,cmd中不会出现warning,如果出现could not find plugin toread fromXXXosg,则说明XXX插件配置不正确,我遇到了TFF配置不正确导致字体不正常,是cmke中参数添加不正确导致,具体参照上文配置
  • CURL编译
1.将curl-7.25.0.zip解压到OSG_Make文件下,打开curl-7.25.0中的vc6curl.dsw,直接编译

这样会产生*.dll,*.lib,*.h文件,建议在curl-7.25.0文件夹中分别搜索这三类文件(后面的编译过程也如此,我编译的时候由于按照其他说明文档配置,遗漏了很多关键文件,导致编译失败)

2.搜索后,将*.h放入E:/OSG/3rdparty/include/curl中,*.dll,*.lib放入E:/OSG/3rdparty/lib2,这样就完成了curl的编译
  • GDAL编译
1.将gdal-1.8.1.zip(这里我选择的是1.8.1版本,之前用了最新的1.10.1版本,结果plugin_gdal编译失败,问题一时半会儿也解决不了,参考网上的资料,用了1.81版本)解压到E:/OSG_MAKE/GDAL,打开makegdal10.sln编译,过程不再赘述。

2.GDAL编译完成后的文件存放于C:/warmerda/bld,包含文件bin,data,html三个子文件夹。
将C:/warmerda/bld/bin和C:/warmerda/bld/data拷贝到E:/osg/gdal文件夹下
E:/OSG_MAKE/GDAL下的*.h文件拷贝到E:/osg/gdal/include下;
E:/OSG_MAKE/GDAL中所有的*.lib和*.dll文件复制到E:/osg/gdal/lib文件夹下。(方法参照上文,第一次编译我参照流传较广的文档编译,里面遗漏了一个文件夹中的*.h文件,所以方便起见,直接在E:/OSG_MAKE/GDAL中搜索,占不了多大空间

  • GEOS编译
1.将geos-3.2.3.tar解压到OSG_MAKE文件夹,打开build\msvc10\geos.sln进行编译。(不需要CMAKE)
2.修改属性

修改debug目标文件名

工程名称

Debug目标文件名

Release目标文件名

Geos

Geosd

Geos

geos-static

libgeosd

libgeos

geos_c

geosd_c

geos_c

3.编译

4.将编译后的文件*.dll,*.lib转移到E:/OSG/GEOS/lib中

  • Expat编译
直接安装,安装后转移文件
  • SQLite编译
1.将sqlite-amalgamation-3070900.zip文件中的文件复制到E:\osg\sqlite\include中;
2.将sqlite-dll-win32-x86-3070900.zip中文件复制到E:\osg\sqlite\lib中;
3.从VS2010的安装文件夹中的Visual Studio10/VC/bin中找到LIB.exe和Link.exe复制到E:\osgearth\sqlite\lib;
4.将 从VS2010的安装文件夹中Microsoft Visual Studio10.0\Common7\IDE\mspdb100.dll复制到E:\osgearth\sqlite\lib;
5.打开cmd窗口,进入E:\osg\sqlite\lib。输入命令:LIB/DEF:sqlite3.def。生成lib文件
  • minizip编译
1.解压zlib-1.2.5.zip
2.用cmake进行编译产生zlib.sln方法与前文相同
3.打开zlib.sln编译
4.文件转移到E:/OSG/ZLIB

  • 配置libzip
将libzip(vs10).rar中的文件复制到E:\osg\libzip文件夹

  • OSGEARTH编译
1.cmake-gui.exe 打开,,将编译地址设置为E:\OSG\OSGEARTH\vs2010,configure
2.添加参数

参数名称

类型

DYNAMIC_OSGEARTH

Bool

On

OSG_DIR

Path

E:/OSG/OpenSceneGraph

点击configure(先点击,就不用再配置OSG下的插件了)
3.设置参数(这里一定要仔细配置,主要是curl,gdal,geos,根据版本,可能会有差异,也可以大概猜出文件名,在相应文件夹中找到即可,其他直接清空)

参数名称

CMAKE_INSTALL_PREFIX

E:/osg/osgearth/vs2010

CMAKE_LINKER

(清空)

CURL_INCLUDE_DIR

E:/osg/3rdparty/include

CURL_LIBRARY

E:/osg/3rdparty/lib/libcurl.lib

CURL_LIBRARY_DEBUG

E:/osg/3rdparty/lib/libcurld.lib

GDAL_INCLUDE_DIR

E:/osg/gdal/include

GDAL_LIBRARY

E:/osg/gdal/lib/gdal_i.lib

GEOS_INCLUDE_DIR

E:/osg/geos/include

GEOS_LIBRARY

E:/osg/geos/lib/geos.lib

GEOS_LIBRARY_DEBUG

E:/osg/geos/lib/geosd.lib





OPENTHREADS_LIBRARY

E:/osg/OpenSceneGraph/lib/OpenThreads.lib

OPENTHREADS_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/OpenThreadsD.lib

OSGDB_LIBRARY

E:/osg/OpenSceneGraph/lib/osgDB.lib

OSGDB_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgDBD.lib

OSGFX_LIBRARY

E:/osg/OpenSceneGraph/lib/osgFX.lib

OSGFX_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgFXD.lib

OSGGA_LIBRARY

E:/osg/OpenSceneGraph/lib/osgGA.lib

OSGGA_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgGAD.lib

OSGMANIPULATOR_LIBRARY

E:/osg/OpenSceneGraph/lib/osgManipulator.lib

OSGMANIPULATOR_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgManipulatorD.lib

OSGSHADOW_LIBRARY

E:/osg/OpenSceneGraph/lib/osgShadow.lib

OSGSHADOW_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgShadowD.lib

OSGSIM_LIBRARY

E:/osg/OpenSceneGraph/lib/osgSim.lib

OSGSIM_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgSimD.lib

OSGTERRAIN_LIBRARY

E:/osg/OpenSceneGraph/lib/osgTerrain.lib

OSGTERRAIN_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgTerrainD.lib

OSGTEXT_LIBRARY

E:/osg/OpenSceneGraph/lib/osgText.lib

OSGTEXT_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgTextD.lib

OSGUTIL_LIBRARY

E:/osg/OpenSceneGraph/lib/osgUtil.lib

OSGUTIL_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgUtilD.lib

OSGVIEWER_LIBRARY

E:/osg/OpenSceneGraph/lib/osgViewer.lib

OSGVIEWER_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgViewerD.lib

OSGWIDGET_LIBRARY

E:/osg/OpenSceneGraph/lib/osgWidget.lib

OSGWIDGET_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgWidgetD.lib

OSG_GEN_INCLUDE_DIR

E:/osg/OpenSceneGraph/include

OSG_INCLUDE_DIR

E:/osg/OpenSceneGraph/include

OSG_LIBRARY

E:/osg/OpenSceneGraph/lib/osg.lib

OSG_LIBRARY_DEBUG

E:/osg/OpenSceneGraph/lib/osgd.lib

OSG_VERSION_EXE


SQLITE3_INCLUDE_DIR

E:/osg/sqlite/include

SQLITE3_LIBRARY

E:/osg/sqlite/lib/sqlite3.lib

ZLIB_INCLUDE_DIR

E:/osg/minizip/include

ZLIB_LIBRARY

E:/osg/minizip/LIB/zlib.lib

MINIZIP_INCLUDE_DIR

E:/osg/minizip/include

MINIZIP_LIBRARY

E:/osg/minizip/LIB/zlib.lib


4.generate
5.打开E:\osgearth\osgearth\vs2010\OSGEARTH.sln
6.在工程属性中设置,库中添加E:/osg下所用文件夹中的include文件(如E:/osg/3rdparty/include),包含目录添加E:/osg文件夹中的lib文件(如E:/osg/3rdparty/lib
7.批生成
8.添加OSG_FILE_PATH中的路径到E:\OSG\OSGEARTH\data
PATH中添加:
E:\OSGearth\OSGEARTH\2012\bin\Debug;E:\OSGearth\OSGEARTH\2012\bin\Release
9.测试
cmd进入E:\OSG\osgearth\tests 输入命令行osgviewer gdal_tiff.earth



出现了这个地球就可以了,还挺好玩=。=
0 0
原创粉丝点击