WIN10系统下OSG/OSGEARTH的VS2017环境配置

本文档详述了在Windows 10系统中,使用Visual Studio 2017配置OpenSceneGraph (OSG) 和 OSGEarth 的步骤,包括CMake配置、编译过程、环境变量设置以及相关依赖库如GEOS、CURL、SQLite3、Proj4和GDAL的编译。教程还涉及了如何解决版本冲突和编译错误,以及如何测试编译成功的osg和osgearth。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WIN10系统下OSG/OSGEARTH的VS2017环境配置

<font color=# #000000 >网上有两种方式编译osg和osgearth,一种是Cmake方式,一种是vcpkg,
本篇文章主要讲自己亲身cmake方式,vcpkg方式参考链接:
https://www.cnblogs.com/hik-wxy/p/14750077.html




前言

提示:


提示:以下是本篇文章正文内容,下面案仅供参考

一、osg的编译?

1.官方网站

OpenSceneGraph3.6.3下载:
http://www.openscenegraph.org/index.php/download-section/stable-releases/231-openscenegraph-3-6-3-release-download
3rdParty下载:
http://www.openscenegraph.org/index.php/download-section/dependencies
Data下载:
http://www.openscenegraph.org/index.php/download-section/data

注:第三方库的编译比较困难,且会出现版本冲突问题,建议编译osg/osgearth使用3rdParty的第三方库,但是官方给的第三方库又不是很全,以下链接是包括qt的第三方库
全库

2.编译准备

在D盘建立一个OSG文件夹,并将步骤1下载的安装包按如下方式放置 D:\OSG\OpenSCeneGraph-OpenSceneGraph-3.6.5:源码解压放于此 D:\OSG\3rdParty:第三方依赖库解压放于此 D:\OSG\Data:数据包解压放于此 注:3rdparty里面

3.源码安装

(1)安装CMake工具并打开: 链接如下:

https://cmake.org/download/
(2)如下所示,填写源码路径和结果路径,

请添加图片描述

(3)点击Configure,并按照下图进行配置,然后点击Finish.

在这里插入图片描述
在这里插入图片描述

(4)在红色列表中找到ACTUAL_ARDPARTY_DIR,并将其值设置为ON,CMAKE_INSTALL_PREFIX,值为第一步的结果路径。
注:GLUT_LIBRARY 目录为3rdparty下的lib/freeglut.lib,目录中显示的话必须添加上,否则下面的编译过程中会报出找不到gl相关文件的错误。
在这里插入图片描述
在这里插入图片描述

(5)点击Generate,自此构建完成。

在这里插入图片描述

4.编译

(1)在D:/OSG/OSGbuild下,找到OpenSceneGraph.sln并打开,点击VS菜单选择 生成->批量生成,对ALL_BUILD进行生成,选择(Debug和Release两个版本),这段时间很长,大概需要4-5小时。如果前面步骤没有错误的话,这一步不会报错,只有警告,设置详情如下图所示:

在这里插入图片描述
在这里插入图片描述
运行结果:
(2)第一步完成之后,再对INSTALL也进行相应生成编译,这段时间会短一点。

在这里插入图片描述

(3)运行结果:
在这里插入图片描述

5.配置环境变量

(1)添加环境变量:OSG_FILE_PATH,变量值为:D:\OSG\data(与第二步中所建目录相对应)

(2)整理:
在D:\OSG下新建文件夹OSG
bin目录
D:\OSG\OSGbuild\bin目录拷贝到D:\OSG\OSG
include目录
D:\OSG\OpenSCeneGraph-OpenSceneGraph-3.6.5\src拷贝带D:\OSG\OSG新建include目录下
D:\OSG\OSGbuild\include目录拷贝到D:\OSG\OSG,点击替换掉相应的文件
lib目录
D:\OSG\OSGbuild\lib目录拷贝到D:\OSG\OSG
在PATH变量中添加:D:\OSG\OSG\bin
配置完成后,在命令行输入osgversion或osglogo进行测试

6.测试

(1)新建c++控制台项目 (2)右键项目,选择“属性”,顶部平台选择X64,左侧配置属性选择“VC++目录”,在包含目录添加:结果目录中的include目录(D:\OSG\OSG\include)。在库目录添加:结果目录中的lib目录 (D:OSG\OSG\lib)

在这里插入图片描述
(3)打开项目属性的连接器,选择”输入“,在附加依赖项中添加:
在这里插入图片描述

OpenThreadsd.lib
osgd.lib
osgDB.lib
osgUtil.lib
osgGAd.lib
osgViewerd.lib
osgTextd…lib
(4)新建cpp文件中输入以下代码:

#include "stdafx.h"
#include<osgViewer/Viewer>
#include<osgDB/ReadFile>
 
int main(int argc, char **argv)
{
    osgViewer::Viewer viewer;
    viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
    return viewer.run();
}

测试结果:
在这里插入图片描述

编译osgQt

**1.最新版的osg中不附带osgQt源码**,所以需要单独下载**

osgQt下载
github
可使用git下载
git clone git@github.com:openscenegraph/osgQt.git
2.配置环境变量

  • osg:编译好的OSG编译安装-MSVC中方式配置环境变量
  • msvc2017_64:由于这里使用msvc64编译,因此需要添加相应的环境变量
  • 打开环境变量窗口
  • 加入自己的Qt下的msvc2017_64\bin安装路径

3.Cmake编译
具体编译和osg差不多
将Cmakelists.txt拖入CMake中,设置好编译后的build
点击Configure,这里的选择必须与osg编译一样(如果没配置环境变量,则这一步会报错,显示找不到Qt5config.cmake等文件)
在这里插入图片描述

修改CMAKE_INSTALL_PREFIX为OSGQtbuild
在这里插入图片描述

点击Configure->Generate->Open Project
4.Visual Studio编译
后续步骤就和编译osg一样,编译好osgQt后,有如下四个文件夹,将文件夹中内容复制到D:\OSG\OSG安装路径对应文件夹下(编译后会有两个lib)

在这里插入图片描述

在这里插入图片描述

二、编译osgearth编译所需的依赖库

3、编译GEOS

官网网站

https://github.com/libgeos/libgeos

nmake编译方式:解压出geos-3.7.1文件夹,双击运行其中的autogen.bat
在目录中找到nmake.opt,这个文件控制着nmake编译的一些参数。记事本打开,找到如下片段:

######################################################################
# Set WIN64=YES if you are building for 64-bit windows (x64).
# Alternatively, pass WIN64=YES as NMAKE command line argument.
######################################################################
!IFNDEF WIN64
WIN64 = NO
!ENDIF

通过注释知道这里控制编译出的是64位版本还是32位版本,我这里用的64版本,所以改为WIN64=YES,注意:编译器为VS2017,namke不要忘记修改。
同样,再次找到如下片段:

# Set BUILD_DEBUG to YES if you want to make debug build
# and to prepare not optimized binaries.
!IFNDEF BUILD_DEBUG
BUILD_DEBUG = NO
!ENDIF

同样通过注释知道这里控制编译出的是Release版本还是debug版本,我这里用的debug版本,所以改成BUILD_DEBUG=YES。
修改好配置之后,找到VS2017的本机工具命令提示符,CD到geos-3.7.1文件夹,输入命令:

nmake /f makefile.vc

然后等待编译完成就可以了,最终的输出结果在geos-3.7.1文件夹的src文件夹里面。
Release版本,也是可以修改对应的配置用同样的方式编译一边就可以了,它们是以_d后缀来区分的。
将geos-3.7.1的bin,include,lib分别拷贝到D:\OSG\3rdparty的bin、include、lib目录下

2.编译CURL

下载curl,以curl-7.5.3为例,
Cmake配置:
在这里插入图片描述

Cmake生成工程
在这里插入图片描述

打开工程进行编译
在这里插入图片描述
生成成功后,将curl下的bin、include、lib拷贝到D:\OSG\3rdparty下的bin、include、lib

1.编译sqlite3

1.首先下载两个压缩包:
http://www.sqlite.org/download.html
https://www.sqlite.org/2018/sqlite-dll-win64-x64-3260000.zip
https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip
2.解压后,把sqlite-dll-win64-x64-3260000下的两个文件放到sqlite-amalgamation-3260000解压后的目录下,解压后文件夹重命名为sqlite3。组合成下面所示:
在这里插入图片描述

3.可按照下面链接中的方法进行编译:
https://www.cnblogs.com/baipengchao/p/5123346.html
4.按照链接中的方法生成debug 和release版本,分别命名为sqlite3d.lib|sqlite3d.dll,sqlite3.lib|sqlite3.dll
5.把sqlite3.lib 和sqlite3.dll拷贝到
D:\OSG\3rdParty\3rdParty\bin、D:\OSG\3rdParty\3rdParty\lib

1.编译proj

gdal的编译依赖于PROJ6投影库,否则会有如下提示。

PROJ_INCLUDE should be defined. PROJ >= 6 is a required dependency

1、下载
下载地址:
下载版本:

将下载后文件解压到D:\proj-6.3.2文件夹内。
2、配置编译项
在源码目录中创建build文件夹,打开cmake-gui.exe

点击Configure,编译64位,vs2017

点击Finish,会出现错误。

SQLITE3_INCLUDE_DIR和SQLITE3_LIBRARY属性,可以看到现在它们的Value值都为NOTFOUND的状态,设置为前边准备的include和SQLite3.lib的路径。

如果EXE_SQLITE3也提示NOFOUND的话,修改为相应的SQLite3.exe的路径。
设置文件生成目录,我设置的是D:/proj-6.3.2/OSGeo4W。

重新点击Configure,提示Configuring done。

点击Generate,这时可以看到build文件夹里有PROJ4.sln。

3、编译
打开【VS2017 x64 本机工具命令提示符】,进入D:\proj-6.3.2\build文件夹,执行编译

msbuild ALL_BUILD.vcxproj /p:Configuration=“Release”
1

警告,是因为这个文件中有特殊字符的注释文字。可以忽略。

执行如下,整理编译的成果物。
bin中有各种*.exe文件、 include中放有头文件、 lib 中是静态库文件、share放有一些数据文件。

msbuild INSTALL.vcxproj /p:Configuration=“Release”
1

debug版是将上边命令行的Release改为Debug。

4.编译GDAL

参考链接:
https://www.cnblogs.com/charlee44/p/10348472.html

5.拷贝Zlib、libZlib

直接使用链接的3rdParty/下面的zlib.lib和zlibD.lib即可
三、编译OSGEarth
1、下载OSGEarth解压后创建build文件夹
下载链接:
https://github.com/gwaldron/osgearth/releases
版本号为:osgearth2.10.1

2、与前面方法相似,通过CMake编译生成sln
在这里插入图片描述
在这里插入图片描述

3、指定OSGDir
在这里插入图片描述

4、指定3rdParty路径
在这里插入图片描述

5、依次对CURL;GDAL;GEOS;ZLIB进行处理,然后勾上Advanced,点击Configure
CURL:
在这里插入图片描述

GDAL:
在这里插入图片描述

GEOS:
在这里插入图片描述

6、编译OSGEarth
(1)进入D:\OSG\osgearth\buiid目录下,打开OSGEARTH.sln,
点击VS菜单选择 生成->批量生成,对ALL_BUILD进行生成,选择(Debug和Release两个版本),点击生成
(2)生成完成后,再运行INSTALL工程进行生成。

环境变量设计及测试
组织osgearth
bin目录
D:OSG\osgearth\build\bin目录拷贝到OSG\include
include目录
D:\OSG\osgearth\osgearth-osgearth-2.10.1\src拷贝到OSG\include
lib目录
D:\OSG\osgearth\build\lib所有拷贝到OSG\lib
把osg环境变量进行一定的修改:
OSG_FILE_PATH:d:\OSG\Path\data
PATH:d:\OSGCore\Path\bin

软件测试

打开cmd,输入 osgearth_viewer clouds.earth 观察会不会出现下面的图,出现即表示编译成功

在这里插入图片描述


参考链接:

https://blog.youkuaiyun.com/github_39611196/article/details/86527647
提示:这里对编译osg\osgearth进行总结:
问题一:在编译osg和osgearth的第三方库中容易出现版本之间的冲突,所以在编译第三方库之后依旧出了问题,所以采用了下载好的第三方库3rdparty作为osg/osgearth的第三方库。
问题二:编译osg/osgearth cmake的时候如果有glut,添加第三方库中的freeglut.lib,有glu32,添加第三方库中的glu32.lib,否则VS2017编译报错

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值