图片显示不了,查看原贴: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
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编译
这样会产生*.dll,*.lib,*.h文件,建议在curl-7.25.0文件夹中分别搜索这三类文件(后面的编译过程也如此,我编译的时候由于按照其他说明文档配置,遗漏了很多关键文件,导致编译失败)
2.搜索后,将*.h放入E:/OSG/3rdparty/include/curl中,*.dll,*.lib放入E:/OSG/3rdparty/lib2,这样就完成了curl的编译
- GDAL编译
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编译
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编译
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编译
2.用cmake进行编译产生zlib.sln方法与前文相同
3.打开zlib.sln编译
4.文件转移到E:/OSG/ ZLIB
- 配置libzip
- OSGEARTH编译
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
出现了这个地球就可以了,还挺好玩=。=