下面说一下osg-earth的完整编译过程。
需要下载的东西在这里:
osg(Open Scene Graph3.4.0)
osg-earth(2.7)
gdal(2.0.2)
curl(7.47.1)
zlib(1.2.8)
这些都是源码版的,需要自己编译。我是在Windows环境下编译的(Win7 x64系统),使用的CMake3.4.1
1.首先编译 osg,打开CMake GUI,在红框内,第一行选择osg的解压目录,第二行选择编译生成路径,可随意指定,习惯上指定为源码路径+build。
单击Configure,选择你使用的VS版本,这里我使用VS2012 x64版。
没有意外的话,会看到 Configuring Done,然后单击Generate,顺利的话会看到Generating Done。
生成结束后切换到build文件夹,会看到有一堆生成的文件,选择OpenSceneGraph.sln用合适的Visual Studio工具打开 编译即可。
2.接下来编译gdal、curl、zlib库,这些都是osg-earth的依赖项。
编译curl和zlib的过程和osg类似,都是将源码路径和生成路径选对,配置、生成,这里不赘述。
gdal的编译比较特殊,首先看到gdal的解压目录下有一个叫做nmake.opt的文件,这里需要对该文件作一些修改。
打开nmake.opt,搜索GDAL_HOME,将其修改为自己实际的gdal解压目录:
然后若想要编译x64版本的gdal,搜索WIN64 将WIN64=YES之前的注释解开:
修改完成后,首先打开VS的命令行工具:
cd到gdal的解压目录,首先运行
nmake /f makefile.vc需要等待一段时间进行编译,编译完成后运行
nmake /f makefile.vc devinstall该命令会生成gdal库的API开发包,包括include、lib和bin文件夹。
gdal的编译可以参考这里
3.最后到了编译osg-earth
osgearth同样适用CMake进行编译,首先选择源码和生成路径,然后点击Configure
不同的是,此时会弹出配置失败的提示框,这是不要慌,我们可以看到Configure按钮下的框框内出现了一大堆红色的报错,这其实是因为osgearth依赖的库目录或文件Cmake没有检测到,这些是需要我们手动进行配置的。若仔细看的话,可以发现这些红色提示是按照缺少的库来进行分组的。
举例说明:
这段报错是说Cmake没找到OpenThreads库,其实这个库是我们编译osg的时候生成的,这时我们去看Configure按钮上边的红色报错区域:
可以看到Value列的内容为OPENTHREADS_LIBRARY-NOTFOUND和OPENTHREADS_LIBRARY_DEBUG-NOTFOUND,我们需要手动指定路径,这里我编译的debug版本的osgearth,所以只需要指定OPENTHREADS_LIBRARY_DEBUG值即可,可以在osg的目录下搜索OpenThreadsd.lib,然后将其完整路径填入
填完之后再次单击Configure按钮,会发现关于这个依赖项缺失的错误已经没有了。
其余的缺失项包括:osg编译生成的osgd.lib、osgDBd.lib、osgManipulatord.lib、osgShadowd.lib、osgViewerd.lib、osgWidgetd.lib等几个库,依次修改即可,
还有之前编译的gdal、curl和zlib库,都填上正确路径即可配置通过。然后单击Generate生成sln文件。
在build路径下找到OSGEARTH.sln打开编译即可。
4.编译完成后,将之前编译的所有库的最终文件(dll和exe)都拷贝到osgearth的生成目录下,打开cmd切换到该目录,执行osgearth_viewer.exe XXX:\osgearth\osgearth\tests\gdal_tiff.earth命令(osgearth_viewer.exe为查看器 第二个参数为地球配置文件的全路径),会看到如下地球(默认为全屏的 按F键切换到小窗口):
按S键可看到帧率等信息