本人OSGEarth新手,因为业务需要,搭建OSGEarth开发环境。感觉搭建过程比较复杂,也在网上查找各种材料及参考了很多搭建过程的文章,仍然不能顺利搭建。感谢网上各位大神写的文章,才能最终搭建完成,现将搭建过程整理并做记录。
一、环境准备
1、软件版本信息
1)系统环境: win10 64位
2)研发工具: VS2022
3)软件及版本: CMake 3.26.5
OSG OpenSceneGraph-3.6.5
OSGEarth osgearth-3.1
PROJ proj-6.3.2
CURL curl-7.65.3.zip
GDAL gdal-3.3.2
GEOS geos-3.7.3
SQLite 3
Libzip libzip-1.10.1
Zlib zlib-1.2.7.2
HDF4 HDF4.2.6
HDF5 HDF5-1.8.7
2、VS2022 安装
下载 VS2022,VS2022的安装这里就不赘述了,注意安装时需要勾选MFC选项。
如果没有安装MFC组件也可以在VS2022安装完成后选择添加组件进行安装。在vs中创建新项目,右侧滑动框直接拉到最底下,找到安装多个工具和功能,如下图所示:
3、CMAKE
下载 CMake 3.24.4 ,并解压CMAKE到 D:\OSGEarthDEV\cmake-3.26.5-windows-x86_64
4、OSG
下载 OpenSceneGraph-3.6.5 并解压到D:\OSGEarthDEV\OSG\OpenSceneGraph-OpenSceneGraph-3.6.5
5、依赖包
下载 3rdParty,目前没有和VS2022对应版本,下载最新的版本VS2017全量包3rdParty_VS2017_v141_x64_V11_full.7z
下载后解压到D:\OSGEarthDEV\OSG\3rdParty
6、数据包
下载 数据包。
解压到D:\OSGEarthDEV\OSG\OpenSceneGraph-Data-3.4.0目录下。
二、OSG环境搭建
1、构建OSG
1)在D:\OSGEarthDEV\OSG\OpenSceneGraph-OpenSceneGraph-3.6.5文件夹中,创建新文件夹build_vs2022
2)使用CMAKE-GUI构建,并配置资源及构建目录。
source code 选择OSG解压目录,build目录选择新建的build_2022,点击【Configure】。
点击 【Finish】
■ 注意ACTUL_3RDPARIT_DIR的值指向刚才解压后的依赖包位置。
■ 勾选BUILD_OSG_EXAMPLES
■ 修改CMAKE_INSTALL_PREFIX值为D:/OSGEarthDEV/OSG/OpenSceneGraph-OpenSceneGraph-3.6.5/build_vs2022
■ 取消勾选OSG_TEXT_USE_FONTCONFIG
■ 修改FREETYPE_INCLUDE_DIR的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/include
■ 修改FREETYPE_INCLUDE_DIR_freetype2的值为D:/OSGEarthDEV/OSG/3rdParty/x64/include
■ 修改FREETYPE_INCLUDE_DIR_ft2build的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/include
■ 修改FREETYPE_LIBRARY的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/lib/freetype271.lib
■ 修改FREETYPE_LIBRARY_DEBUG的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/lib/freetype271d.lib
■ 修改FREETYPE_LIBRARY_RELEASE的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/lib/freetype271.lib
■ 修改JPEG_INCLUDE_DIR的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/include
■ 修改JPEG_LIBRARY的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/lib/jpeg.lib
■ 修改JPEG_LIBRARY_DEBUG的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/lib/jpegd.lib
■ 修改JPEG_LIBRARY_RELEASE的值为:D:/OSGEarthDEV/OSG/3rdParty/x64/lib/jpeg.lib
再次【Configure】。
■ 勾选BUILD_MFC_EXAMPLE
再次【Configure】。发现没有红色栏了。
输出栏有警告信息,发现有很多路径找不到,警告信息不影响后面的生成。主要依赖包应该都可在D:/OSGEarthDEV/OSG/3rdParty中找到。在CMAKE中重新配置路径。
上面办法有点麻烦,需要一个一个进行配置,发现3rdParty这个文件夹中的路径可能有问题,觉得ACTUL_3RDPARIT_DIR项配置好的话,下面的路径可以自动识别。修改个文件路径看。
■ 依赖文件的原路径为:D:\OSGEarthDEV\OSG\3rdParty\x64
■ 修改后依赖文件路径为:D:\OSGEarthDEV\OSG\3rdParty
点击【Generate】。发现大部分路径已经配置好了。开心!
注意:上面修改的路径都需要修改为去掉x64的目录,我在后面生成时这一步可能忘了。
■ 修改FREETYPE_INCLUDE_DIR的值为:D:/OSGEarthDEV/OSG/3rdParty/include
■ 修改FREETYPE_INCLUDE_DIR_freetype2的值为D:/OSGEarthDEV/OSG/3rdParty/include
■ 修改FREETYPE_INCLUDE_DIR_ft2build的值为:D:/OSGEarthDEV/OSG/3rdParty/include
■ 修改FREETYPE_LIBRARY的值为:D:/OSGEarthDEV/OSG/3rdParty/lib/freetype271.lib
■ 修改FREETYPE_LIBRARY_DEBUG的值为:D:/OSGEarthDEV/OSG/3rdParty/lib/freetype271d.lib
■ 修改FREETYPE_LIBRARY_RELEASE的值为:D:/OSGEarthDEV/OSG/3rdParty/lib/freetype271.lib
■ 修改JPEG_INCLUDE_DIR的值为:D:/OSGEarthDEV/OSG/3rdParty/include
■ 修改JPEG_LIBRARY的值为:D:/OSGEarthDEV/OSG/3rdParty/lib/jpeg.lib
■ 修改JPEG_LIBRARY_DEBUG的值为:D:/OSGEarthDEV/OSG/3rdParty/lib/jpegd.lib
■ 修改JPEG_LIBRARY_RELEASE的值为:D:/OSGEarthDEV/OSG/3rdParty/lib/jpeg.lib
GDAL 还有问题,debug Library的lib找不到,配置一个和上面Library 一样的
我在这有些依赖没有找到,只修改GDAL的问题,警告信息就先暂时不管了。点击【Generate】可以成功。
生成成功。
2、项目编译
使用VS2022打开项目
选择【生成】--- 【批生成】
选择 ALL_BUILD ---- Debug|x64 和 ALL_BUILD----Release|x64
生成时间比较漫长,请耐心等待,我的生成时间大约3个小时。
生成过程中报错, 有很多
LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\osgViewer.lib”
LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\***.lib”
这种问题,报生成有失败。
应该是在CMAKE步骤有问题,可能有些配置改乱了。我从新CMAKE了一遍,下面是我的CMAKE的所有配置如图:
再次使用vs2022打开项目,选择【生成】--- 【批生成】
选择 ALL_BUILD ---- Debug|x64 和 ALL_BUILD----Release|x64
漫长的等待。。。。。。。。。。。。。。。。。。。。。。。。。。用时2个多小时。
还有失败,修改osgviewerMFC中代码 0x0501 代表XP系统,修改为 0x0A00 代表win10系统。
再次
这次很快用时几十秒。
这个也很快。
三、验证是否编译成功
1、配置环境变量
右键此电脑--》高级系统设置--》高级--》环境变量
新建环境变量OSG_FILE_PATH,值为:D:\OSGEarthDEV\OSG\OpenSceneGraph-Data-3.4.0
在Path变量中添加 osg的build生成的build_vs2022文件夹中的bin目录
2、验证是否成功
win+r 运行 cmd
运行命令 osgversion
OpenSceneGraph Library 3.6.5
没有问题----------
运行 osglogo 报错,还有这种错,系统缺少zlib.dll文件。
将D:\OSGEarthDEV\OSG\3rdParty\bin中的zlib.dll文件复制到C:\Windows\System32 和 C:\Windows\SysWOW64。
再次运行osglogo
成功。。。。。。。。。。。。。。。。。。。。。。
配置好环境变量后可直接运行D:\OSGEarthDEV\OSG\OpenSceneGraph-OpenSceneGraph-3.6.5\build_vs2022\bin 中的示例程序(.exe)
运行 osgtexture3D
3、读取osg文件
因为配置了数据的环境变量所以使用osgViewer 可直接读取D:\OSGEarthDEV\OSG\OpenSceneGraph-Data-3.4.0中的数据文件。如图
运行 osgViewer cow.osg
本文参阅:OSG-OpenSceneGraph在WIN10与VS2022下的部署 感谢作者