目录

一 本机环境

二 安装VC2017编译环境

三 安装Cmake

四 下载源代码和依赖项

4.1 osgEarth源代码

4.2 OpenSceneGraph源代码

4.3 OpenSceneGraph依赖项

4.4 GDAL

4.5 Libzip和zlib

五 编译

5.1 编译OSG

六 验证编译结果


原文链接

一 本机环境

Windows11 64bit。VS 2019社区版。由于OSG第三方依赖我使用了VC 2017 x64的版本,所以需要给vs2019安装vc2017的编译环境。后面有所预编译或者源码编译均采用VC2017版本。

安装VC2017编译环境

三 安装Cmake

cmake.org/download/

四 下载源代码和依赖项

4.1 osgEarth源代码

使用源代码最大优势就是方便以后跨平台。
https://github.com/gwaldron/osgearth/releases/tag/osgearth-3.4
下载Source code(zip)这个。当前是3.4版本。
官网要求依赖项如下:
OSG 3.6 及以上;
GDAL 2.4 及以上;
CURL;
GEOS 3.2及以上(可选)。

4.2 OpenSceneGraph源代码

github.com/openscenegraph/OpenSceneGraph/tags
下载 OpenSceneGraph-3.6.5 zip格式。

4.3 OpenSceneGraph依赖项

openscenegraph.com/index.php/download-section/dependencies
下载
Full package for 64 bit
https://download.osgvisual.org/3rdParty_VS2017_v141_x64_V11_full.7z - Last Update: V11 on 2017/04/08
这里有个问题,OSG官网给的预编译第三方依赖中GDAL版本是2.1.3,这个版本不符合osgEarth3.4要求的GDAL 最低版本2.4,虽然不知道直接这么用否会影响osgEarth,但是为了避免后面的麻烦,还是单独下载了GDAL2.4版本供后面osgEarth编译使用。

4.4 GDAL

Gdal使用预编译版本,注意下载的时候选择VC2017 和x64。其实当前2023年GDAL版本已经到3.8了,3.x版本肯定相对2.x版本有接口级别的升级,为了减少后续麻烦我还是使用osgEarth要求的2.4版本。
https://www.gisinternals.com/archive.php

注意include和lib 与 bin是分开的,需要下载下面两个包就对了。

 建立一个空目录,命名gdal,然后将两个压缩包里面的include、lib、bin目录都拷贝进去。

 此时CURL和GEOS都在可以在GDAL的里面找到了,不必单独下载了。

4.5 Libzip和zlib

Osg和GDAL自带了zip.h这个文件,但是版本太低,在osgEarth的zip驱动中需要一个较高版本,因此这里下载较新版本源码编译成库供osgEarth编译。
尝试官方的
https://github.com/madler/zlib/releases/tag/v1.2.13

https://github.com/nih-at/libzip/releases/tag/v1.10.0
然而并搞不定。也不知道为什么这么简单的一个小库,竟然用vs2019+cmake就是搞不定。
使用第三方的库如下:
https://github.com/kiyolee/zlib-win-build
https://github.com/kiyolee/libzip-win-build

 

 打开上面这个sln,编译x64的,debug和release都搞。


注意这两个包的目录位置,按照这个位置libzip就能找到zlib,然后打开这个sln直接编译x64 Debug和Release即可。
单独建个目录把zlib和libzip编译后的库文件放进去:

 

 

 注意上面Debug同级还需要有Release目录,里面文件名是一样的。

五 编译

5.1 编译OSG

在OSG源码目录建立build目录,打开Cmake输入这两个目录:

几个关键选项如下:

 

 

 

 

 

 

 

 开始生成编译,等了很长时间。。。
补充一个配置项 OSG_GL_CONTEXT_VERSION 3.3
由于OpenGL3.0以后是不像后兼容的,所以Examples里面的有些基于OpenGL1.1/2.x 接口的例子是无法运行的,但是通过tests里面对应earth文件也是可以测试的。

 如果没有这个后面运行osgEarth的时候会提示:
GL3: Non-GL3 version number: 1.0

 5.2 编译osgEarth

在osgEarht源码目录新建build目录,打开Cmake-Gui配置这两个路径。
关键选项如下:
Curl,openthreads

Gdal、osg,配置完OSG_DIR以后后面osg相关配置自动就配置好了。 

Zip插件

 

这个插件勾中了就要使用较新版的libzip库。
关于Lerc,osgEarth编译的时候提示没有Lerc这个库。osgEarth官网没有写需要单独下载这个库的源码。自己手工下载 https://github.com/Esri/lerc 源码,解压到
…\osgearth3.4\src\third_party\lerc 这个目录下:

Sqlite3 使用gdal包里面的。

 

从github把rapidjson源代码搞到下面路径: 

 然后点击Cmake的Generate,然后Open Project,
配置不明白lerc这个驱动,直接删掉,希望再也不要用到它。

注意设置好VC2017,
编译。。。。x64 Debug, Release。 

六 验证编译结果

拷贝以下dll等内容到

…\osgearth3.4\build\bin\Release 这个目录

    D:\codes\osgEarth-Projects\osgearth3.4\build\lib\Release
    D:\codes\osgEarth-Projects\osg3.6.5\build\bin
    D:\codes\osgEarth-Projects\3rdParty_VS2017\bin
    D:\codes\osgEarth-Projects\gdal\bin
    D:\codes\osgEarth-Projects\libzip\bin\Release

测试earth文件等

D:\codes\osgEarth-Projects\osgearth3.4\tests 和

D:\codes\osgEarth-Projects\osgearth3.4\data

拷贝到

D:\codes\osgEarth-Projects\osgearth3.4\build\bin

拷贝后目录结构如下:

打开命令行,进入D:\codes\osgEarth-Projects\osgearth3.4\build\bin\Release

执行命令

.\osgearth_viewer.exe ..\tests\simple.earth

一切顺利的话会出现地球如下:

【done】即使是第二次编译安装,仍然大约花了8个小时的时间。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐