Windows10平台VS2017编译OSG3.6.5源码总结记录

前言

经过两三天的osg源码终于见到了“牛”。一开始是在windows11上编译的是3.6.3的版本,编译通过但是测试一直操作,一开始一直以为是系统或者版本的问题,参照其他人的博客,尝试在win10上编译3.6.5,也是编译了三四次,才编译成功。试错好多次,现在回想整个编译过程,发现无论是在win11还是win10,无论是3.6.3还是3.6.5,都是自己编译过程有所疏漏。
因此,本文参考总结多个相关博客,取其精华,记录编译过程以及相关的问题。

1、编译准备

1.1、源码、依赖、数据下载

参考:Win10+VS2017+Osg3.6.3+OsgEarth3.0编译

  1. 源码下载下载地址,选择自己需要的版本
  2. 第三方库依赖及程序包下载下载地址,下载对应版本依赖库,根据你的VS版本选择对应的库
  3. osg测试样例数据下载地址

1.2、CMake安装

cmake直接在官网下载安装即可,cmake的版本太高,在configure的时候可能会有红色的警告(warning)提示,不影响源码编译

2、编译过程

2.1、源码依赖数据结构

参考:Windows10编译安装OpenSceneGraph(OSG)教程,个人感觉这篇博文的cmake配置说明的更清晰些。
参考了上面的博客,为了更加清晰,我自建的build和install我放在了和OpenSceneGraph同一级,build存放cmake构建出来的VS项目,install用来存放生成的lib和dll等文件。文件夹目录如下:

  • D:\OSG
    • OpenSceneGraph
      • CMakeLists.txt等其它源码内容
    • build(自己新建,编译目录)
    • install(自己新建,安装目录)
    • 3rdParty
      • bin、gdal-data等第三方依赖内容
    • OpenSceneGraph-Data
      • Catch、Configuration等模型数据内容

2.2、CMake构建(configure和generate)

  1. 打开CMake(cmake-gui)程序
  • 源码目录填写D:/OSG/OpenSceneGraph-3.6.5
  • 构建目录填写D:/OSG/build
    在这里插入图片描述
  1. 点击Configure,在弹出的窗口中选择:
  • Visual Studio 15 2017
  • x64
    在这里插入图片描述
  1. 出现很多行红色底纹的配置项,更改相关配置
  • 编译CMAK_BUILD_TYPE,其值设置为Release;Debug
    建议设置一下,以防后续错用Debug版本的lib或者Release版本的lib

  • 勾选BUILD_OSG_EXAMPLES

  • CMAKE_INSTALL_PREFIX改为D:/OSG/nstall
    设置安装生成lib、bin等生成的地址

  • 设置3rdparty第三方依赖库的地址
    Cmake时3rdparty的路径要自己设置,不要使用默认的,cmake无法逐层遍历文件夹,一定要指定到包含bin、lib、share等的文件夹,如: D:\OSG\3rdParty_x64\x64

  1. 继续点击Configure,直到红色底纹消失。
    还是有红色的选项,BUILD_MFC_EXAMPLE 打钩(切记!!!VS2017一定要安装MFC开发组件!!!),再次点击“Configure”按钮,此时没有红色选项。
  2. 点击Generate,生成VS解决方案。完成后,关闭CMake。

至此,在build的目录项会生成一个VS项目,双击打开文件类型为sln的文件。

2.3、编译

使用Visual Studio 2017打开D:\OSG\build\OpenSceneGraph.sln。

2.3.1、afxwin.h头文件修改

参考:【OSG】OSG环境部署 OSG3.6.5+vs2017+win10_x64(超详细)中第三章
为了避免ALL BUILD出现很多的错误,提前修改此头文件,文件所在Examples/osgviewerMFC/headers文件夹下,这种问题一般是因为MFC的编译平台的原因。
在这里插入图片描述
其中的_WIN32_WINNT=Ox0A00,表明目标平台是Win10的,对应关系如下所示:
在这里插入图片描述
而该工程中定义的目标平台为0x0501(该工程中的stdafx.h头文件下定义的):

0x0501是面向xp系统的,因为我使用的是Win10操作系统,所以需要进行以下修改:

2.3.2、ALL_BUILD编译

菜单生成→批生成,勾选项目ALL_BUILD对应的Debug和Release,点击生成。此过程大约需要2小时。
在这里插入图片描述

2.2.3、INSTALL编译

ALL_BUILD编译完成之后,需要进行INSTALL编译,同样打开生成->批生成,选择INSTALL:
在这里插入图片描述

3、添加环境变量

1、添加如下环境变量:

变量名
OSG_ROOTD:\OSG
OSG_BIN_PATH%OSG_ROOT%\install\bin
OSG_INCLUDE_PATH%OSG_ROOT%\install\include
OSG_LIB_PATH%OSG_ROOT%\install\lib
OSG_ROOTD:\OSG\OpenSceneGraph-3.6.5
OSG_SAMPLES_PATH%OSG_ROOT%\install\share\OpenSceneGraph\bin
OSG_FILE_PATHD:\OSG\OpenSceneGraph-Data
  1. 在PATH环境变量中添加:
  • %OSG_BIN_PATH%
  • %OSG_SAMPLES_PATH%

4、 测试是否安装成功

在PowerShell中使用以下命令进行测试:

  • osgversion
  • osglogo
  • osgviewer cow.osg
    说明:以上命令均为Release版,Debug版的命令需要在最后加个d,如osgversiond。
    常见问题:
    如果可以查看OSG版本,但无法显示Logo,需要将D:\OSG\3rdParty\bin目录下的zlib.dll和zlibd.dll复制到D:\OSG\OpenSceneGraph\install\bin目录下。

5、代码测试

  1. 菜单文件→新建→项目,选择Visual C++的空项目,确定。

  2. 工具栏中选择Debug、x64。这里要特别注意:不同的解决方案平台项目属性是需要各自配置的

  3. 新建源文件main.cpp,写一个空的main函数,运行一下。

  4. 更改项目属性:

  • C/C++ - 常规 - 附加包含目录:$(OSG_INCLUDE_PATH)

  • C/C++ - 预处理器 - 预处理器定义:WIN32、_WIN32、NDEBUG(回车符分隔)

  • 链接器 - 常规 - 附加库目录:$(OSG_LIB_PATH)

  • 链接器 - 输入 - 附加依赖项:osgd.lib、osgGAd.lib、osgDBd.lib、osgViewerd.lib、osgTextd.lib、osgUtild.lib、OpenThreadsd.lib(回车符分隔),这里的lib都是待d的debug版本

  1. main.cpp内容:
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>

int main() {
 osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer; //创建查看器
 osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("glider.osg"); //读取模型文件,赋值给节点指针
 viewer->setSceneData(node.get()); //查看器中添加该节点
 return viewer->run(); //运行查看器
}

在这里插入图片描述

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LoserChaser

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值