一、资料准备

1、OSG源码官网下载地址:http://www.openscenegraph.org/index.php/download-section/stable-releases或者OSGChina官网:http://www.osgchina.org/downloads-son.php?id=34,本人使用的是OpenSceneGraph-OpenSceneGraph-3.6.3.zip

2、OSG第三方依赖库下载地址:http://www.openscenegraph.org/index.php/download-section/dependencies,找到相对应VS版本的库进行下载,本人使用的是3rdParty_VS2017_v141_x64_V11_full.7z

3、数据包下载地址:http://www.openscenegraph.org/index.php/download-section/data,本人使用的是OpenSceneGraph-Data-3.4.0.zip

4、编码工具下载地址:https://cmake.org/download/,本人使用的是cmake-3.12.0-rc1-win64-x64.msi,下载后进行安装。

5、ffmpeg的资源包(64位开发版):https://ffmpeg.zeranoe.com/builds/win64/dev/。OSG可以通过ffmpeg插件来实现播放视频的功能,在编译OSG的时候要确保全部成功编译才可以顺利使用插件功能。本人在编译OSG的时候就是这个插件项目编译有问题,一直没有编译成功。究其原因发现,本人之前安装过OpenCASCADE,它会错误的致使Cmake编译ffmpeg项目时配置错误,(这是个大坑,三天才跳出来),所以本人下载了ffmpeg的资源包,版本是ffmpeg-4.0-win64-dev.zip,在Cmake时手动进行相关的FFMPEG配置。注:没有安装过OpenCASCADE的人暂不清楚第5步需不需要,可尝试。

二、文件夹准备

在C盘之外的盘符下新建OSG文件夹,将下载的资料解压到该文件夹下,注意解压方式选择“解压到”,只定位到OSG文件夹即可,它会自己产生相应文件夹。

1、源码解压后如下图

2、第三方库解压后如下图

3、数据包解压后如下图

4、在OSG文件夹下新建build文件夹,作为Cmake编译输出文件夹。

5、ffmpeg解压后如下图

6、修改E:\OSG\OpenSceneGraph-OpenSceneGraph-3.6.3\CMakeModules\FindFFmpeg.cmake文件,在SET(FFMPEG_FOUND "NO")之后添加SET(STDINT_OK TRUE),如下图,(参考:https://blog.csdn.net/zhuquanfu/article/details/84635316)

三、Cmake编译源码

1、打开CMake (cmake-gui).exe,指定源码位置和编译输出位置,勾选Grouped,如下图

2、点击一次Configure,出现下图所示,选择本机的VS2017版本,Win64代表编译输出64位工程,点击Finish,开始进行配置

3、此时Cmake界面窗口出现编译的信息,而build文件夹也产生了相应的文件。注意:标红部分是需要进行确认的

4、修改相关路径

ACTUAL_3RDPARTY_DIR(第三方库)设置为E:/OSG/3rdParty_x64/x64

勾选BUILD_OSG_EXAMPLES

CMAKE_INSTALL_PREFIX设置为E:/OSG/build/bin

COLLADA_DOM_ROOT设置为E:/OSG/3rdParty_x64/x64/include/1.4/dom

修改ffmpeg相关路径,由于本人安装了OpenCASCADE,导致FFMPEG相关路径都是错误的,如下图

手动进行修改ffmpeg的各个值,如下图,注意FFMPEG_STDINT_INCLUDE_DIR的值为空

再次点击一次Configure,又出现部分红色,勾选BUILD_MFC_EXAMPLE,如下图

再次点击Configure,此时所有标红部分消失,点击Generate,等待完成,如下图

 四、VS编译项目

1、用VS2019打开OpenSceneGraph.sln,如下图

2、在生成项目之前,先修改stdafx.h,定位到Examples osgviewerMFC工程,如下图

3、上图标红的宏定义部分,_WIN32_WINNT实际的值为0x0601(本机是WIN7),而这里定义为0x0501,显然是错的,所以将WINVER和_WIN32_WINNT都统一修改为0x0601,如下图。注:若是 WIN10其值应该是0x0A00。

4、点击生成,批生成

5、编译生成ALL_BUILD, 勾选相关的编译输出类型,本人只勾选了Release,若勾选Debug,编译时间会更长(约4小时)。确保ALL_BUILD所有项目均成功编译,否则第6步会失败。

6、编译生成INSTALL,本人也只勾选了Release版。

五、拷贝库文件至文件夹

1、在OSG文件夹下新建output文件夹,并在该文件夹下新建bin、include、lib三个文件夹,用于存放OSG编译后的动态库、头文件和库文件,如下图

2、拷贝E:\OSG\3rdParty_x64\x64下的bin、include、lib文件夹至E:\OSG\output文件夹下,选择覆盖即可。

3、拷贝E:\OSG\build下的bin、include、lib文件夹至E:\OSG\output文件夹下,选择覆盖即可。

4、拷贝E:\OSG\OpenSceneGraph-OpenSceneGraph-3.6.3下的include文件夹至E:\OSG\output文件夹下,选择覆盖即可。

六、配置环境变量

1、新建系统变量OSG_FILE_PATH,值为E:\OSG\OpenSceneGraph-Data

2、将下列路径加入到Path中

E:\OSG\output\bin

3、输入cmd命令,测试OSG是否安装成功,如下图

osgversion

osgviewer cow.osg

osglogo

 七、测试,新建WIN32控制台工程

1、在cpp中输入以下代码

#include <iostream>
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>

int main()
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer.run();
}

如图

2、鼠标右键工程,选择属性,在VC++ 目录选项下,配置包含目录和库目录,如下图

3、在链接器->输入选项下,配置附加依赖项,添加下列库,注:Debug模式下这些库后缀带d,Release模式下不带d,本机没有编译Debug模式的库,所以直接用Release版,如下图

OpenThreads.lib;osg.lib;osgDB.lib;osgUtil.lib;osgGA.lib;osgViewer.lib;osgText.lib;

4、编译运行,效果显示

八、参考链接

https://www.jianshu.com/p/7fb0e414e1a9

https://www.cnblogs.com/coolbear/p/8548440.html

https://blog.csdn.net/u014587123/article/details/79130469

Windows下Cmake+VS2017+OpenSceneGraph环境搭建及采坑的更多相关文章

  1. [转]MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)

    MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)   网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置M ...

  2. 转:Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

    原文来自于:http://www.ituring.com.cn/article/128439 Windows下的PHP开发环境搭建——PHP线程安全与非线程安全.Apache版本选择,及详解五种运行模 ...

  3. windows下vue.js开发环境搭建教程

    这篇文章主要为大家详细介绍了windows下vue.js开发环境搭建教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 最近,vue.js越来越火.在这样的大浪潮下,我也开始进入vue的学习行列中 ...

  4. 【1】windows下IOS开发基础环境搭建

    一.目的 本文的目的是windows下IOS开发基础环境搭建做了对应的介绍,大家可根据文档步骤进行mac环境部署: 二.安装虚拟机 下载虚拟机安装文件绿色版,点击如下文件安装 获取安装包:       ...

  5. Windows下ELK-5.4.3环境搭建

    Windows下ELK-5.4.3环境搭建 一.概述 ELK官网 https://www.elastic.co ELK由Elasticsearch.Logstash和Kibana三部分组件组成: El ...

  6. Windows下C,C++开发环境搭建指南

    Windows下C,C++开发环境搭建指南 前情提要 基于近一段时间很多网友发邮件反馈,说一些项目编译出现问题,诸如此类的情况. 就觉得很有必要写一篇C,C++开发环境的小指南,统一回复. 1.君欲善 ...

  7. Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。

    今天为在Windows下建立PHP开发环境,在考虑下载何种PHP版本时,遭遇一些让我困惑的情况,为了解决这些困惑,不出意料地牵扯出更多让我困惑的问题. 为了将这些困惑一网打尽,我花了一下午加一晚上的时 ...

  8. Windows下Go语言的环境搭建

    在本地搭建了一个开发GO语言的开发环境,给大家分享一下用go语言写的第一个hello world的过程,希望对大家有所帮助. 1.想写GO语言首先得下载go语言的开发包 官方下载地址:https:// ...

  9. 手把手教你Windows下Go语言的环境搭建

    1.想写GO语言首先得下载go语言的开发包 官方下载地址:https://code.google.com/p/go/downloads/list 我用的是Win7 64位的操作系统,截图如下: 2.把 ...

  10. windows下php+apache+mysql环境搭建

    在Windows 7下进行PHP环境搭建,首先需要下载PHP代码包和Apache与Mysql的安装软件包. PHP版本:php-5.3.2-Win32-VC6-x86,VC9是专门为IIS定制的,VC ...

随机推荐

  1. Qt编写地图综合应用20-多浏览器内核

    一.前言 本人写Qt程序这么多年,比较喜欢支持多个Qt版本,尤其是钟情于支持任意Qt版本+任意系统+任意编译器,这句话说起来简单其实实现起来就不容易了,首先你得有个很多版本的测试环境,起码十几个Qt环 ...

  2. Log4net的使用教程

    不怎么爱写日志,(就是比较懒),后来遇上bug了找不到问题,才决定好好使用日志 其实说实话,log4配置的那些东西记不太住,但也不需要记住什么.百度就有现成的,自己跟着网上配置好之后,稍微记录一下,为 ...

  3. 通过shadow来更改ubuntu密码,并且使用frp组网

    局域网搜索 pings 所有设备找到在线设备并登录网页 :: 作者:mao 时间:2024 11.30 @echo off chcp 65001 >nul :: 启用延迟环境变量扩展 setlo ...

  4. 长连接网关技术专题(十):百度基于Go的千万级统一长连接服务架构实践

    本文由百度技术团队分享,引用自百度Geek说,原题"千万级高性能长连接Go服务架构实践",为了阅读便利,本文进行了排版优化等. 1.引言 移动互联网时代,长连接服务成为了提升应用实 ...

  5. WPF设置默认语言地区CultureInfo

    public partial class App : Application { public App() { CultureInfo cultureInfo = new CultureInfo(&q ...

  6. postman环境设置以及参数传递

    通常一个公司项目有不同的环境(开发环境,测试环境,上线环境),在做测试时候,有可能会遇到接口改变之类的,postman保存了很多接口,想要再测试局需要多次修改域名或者端口,这个时候就需要配置环境 1. ...

  7. Spark异常总结

    1.Spark读写同一张表报错问题Cannot overwrite a path that is also being read from 问题描述:Spark SQL在执行ORC和Parquet格式 ...

  8. Atcoder ABC387F Count Arrays 题解 [ 绿 ] [ 基环树 ] [ 树形 dp ] [ 前缀和优化 ]

    Count Arrays:一眼秒的计数题. 思路 显然,把小于等于的条件化为大的向小的连单向边,每个数的入度都是 \(1\),就会形成一个基环树森林. 那么考虑这个环上能填什么数.因为所有数都小于等于 ...

  9. element vue 动态单选_VUE 动态构建混合数据Treeselect选择树,同时解决巨树问题

    今天在项目中需要通过行政区域选择,然后选择该行政区域下面的景区,也就是要构建行政区划.景区两表数据表的树.全国的行政区域到县已经3500多了,再加上景区会有几万个点,这棵选择树不论是在后台还是在前台构 ...

  10. QT5笔记: 25. 非模态的自定义对话框

    窗口对象为QDialog 显示方法为 show(); locateCell->show(); 可以通过public方法或者信号槽机制获取非模态窗口的信息 例子:非模态窗口,为主窗口数据输入吧 v ...