本人微信公众号: 程序员架构笔记
欢迎大家关注,本篇博客花了很长时间才完成,感谢大家关注我。
这是跑起来的osgearthDemo效果
工具与环境
这里使用的 cmake-3.29 、 VS2019 和 osgQt 进行编译。
Cmake版本应该无所谓,vs也可以选择vs2017,本次用vs2019给大家编译。
在这里想给分享下,其实只要选对版本,网上也有很多资料。我去年花了半个月编出了球,踩了很多坑。
最近公司又需要国产化麒麟V10系统,又重新把qt5.14.2源码编译,又踩了很多坑,其实都不是很难,只要你敢做肯定可以,其实很多博客都可借鉴的。我也是看了好多博客才在win10上把球给编出来。
Vs2019如何配置qt5.14.2这个不在一一介绍,
一、编译OSG3.6.5
1、下载
下载不多赘述,在github osg3.6.5版本。
Release OpenSceneGraph-3.6.5 · openscenegraph/OpenSceneGraph · GitHub
另外还需要 3rdpartyVs2019x64.7z 和 OpenSceneGraph-Data-3.0.0 可以在OSG英文官网中下载到。
可以参考博客:VS2019编译OSG3.7.0+OSGEarth3.3+OSGQt_osgearth 编译-CSDN博客
2、cmake编译 osg
2.1 将OSG3.6.6源码、3rdpartyVs2019x64.7z
(备注 vs2017可以用这个 3rdParty_VS2017_v141_x64_V11_full)、OpenSceneGraph-Data-3.4.0解压到合适的目录,并新建一个文件夹用于保存cmake生成的项目。如下图,这里我放在了同级目录下。
然后打开cmake,在最上面第一栏选择OSG源码中CMakeLists文件所在文件夹的路径,第二栏选择上面自己新建的文件夹路径,然后点击Configure按钮,会弹出如下图子界面,第一栏选择VS2019,第二栏选择x64点击Finish按钮,cmake开始加载。
等待加载完成,会显示一片红,并在下面的log中显示一些库找不到。
The following OPTIONAL packages have been found:
* OpenGL
* Threads
-- The following OPTIONAL packages have not been found:
* EGL
* Freetype
* ilmbase
* Inventor
* Jasper
* OpenEXR
* OpenCascade
* LibXml2
* COLLADA
* FBX
* GDAL
* GTA
* CURL
* LibVNCServer
* DCMTK
* FFmpeg
* GStreamer
* GLIB
* DirectShow
* SDL2
* SDL
* Poppler-glib
* RSVG
* GtkGl
* DirectInput
* NVTT
* ZeroConf
* LIBLAS
* GIFLIB
* JPEG
* ZLIB
* PNG
* TIFF
* QuickTime
* Fontconfig
默认只有 OpenGL和Threads找到,其他都没有found,
这里我要说明下,建议需要配置的有:
2.2 Freetype,LibXml2, GDAL得有,还需要Proj库, CURL,GIFLIB, JPEG,PNG,ZLIB,PNG,TIFF. NVTT等,尽量多设置些依赖的库
备注: 因为windows平台下很多第三方库已经编好了,例如GIFLIB, JPEG png,zlib,tiff nvtt 等已经编好了,如果在linux或者麒麟 arm下,有些库是要自己重新编的,要比windows编译麻烦一点。
如果有一天在麒麟linux编译,不要害怕,我会另写一篇在国产麒麟linux编译 osg+osgearth+osgqt的博客
2.3 如果自己想编 gdal-3.0.4,可以参考下面步骤:
proj-6.2.1 gdal-3.0.4
参照该博客https://developer.aliyun.com/article/1257671
生成 sqlite3.lib sqlilis3.dll
2.4 编译proj-6.2.1,遇到了一个坑,需要设置 sqllite3.exe
编译Gdal3.0.4 参照这个博客WIN10 VS2019下编译GDAL3.0+PROJ6+SQLite_x64 native tools command prompt for vs 2019-CSDN博客
点击BUILD项展开,勾选BUILD_OSG_EXAMPLES项。
然后一直点击Configure按钮直到没有红色项,从下面log可见部分库已经找到(如果没有其他要求,官网下的依赖包中的库应该就已经足够,不需要额外再下别的库了),然后点击Generate按钮,等进度条走完,下方log显示Generating done,即项目生成结束。
最后点击Generate按钮,等待项目生成完毕。
通过vs2019打开 OpenSceneGraph.sln功能,改成Release编译即可。
3 cmake编译 osgQt里面有osgQOpenGL这个库
这个osgQt是比较古老的,说是osg3.几之后需要用osgqt,
下载不多赘述,在github上直接下的master版本。
cmake
build文件下打开sln
cmake
框选的osg的头文件和lib文件都需要设置
该地方有个坑,可能编译失败提示没有版本什么的,我是把
把这两个文件夹复制到 D:osg\OpenScenneGraph\include里面即可
再用vs2019编译成功
4 编译osgEarth3.2
下载不再陈述
这里要重点的必须的库:
Geos , probobuf, sqllist3,gdal ,curl这些是必须的否则后续会出问题,
上面的库如何cmake,不再过多陈述
其他osg当然要设置。
该地方也有坑,需要#include <geos_c.h>该头文件可能报错,
头文件和附加依赖项设置下面的即可
D:\osg\geos-3.9.5\build\capi
D:\osg\geos-3.9.5\build\lib\Release\geos_c.lib
5 最后就是见证奇迹的时刻
用vs新建工程,稍后会在写一篇博客上分享
四、结语
至此,所有的编译就均已完成。