OSG学习:WIN10系统下OSG+VS2017编译及运行

来源:互联网 发布:快乐8软件下载 编辑:程序博客网 时间:2024/05/16 14:54

本文转载自http://blog.csdn.net/wangbingqian_110/article/details/78069061

一、资料准备 

1、OSG源码下载地址:http://www.openscenegraph.org/index.php/download-section/stable-releases(OpenSceneGraph-3.4.1 release 稳定版本)。

2、OSG第三方依赖库下载地址:http://www.openscenegraph.org/index.php/download-section/dependencies(3rdParty_VS2017_v141_x64_V11)。 
注:第三方库版本必须与Visual Studio版本相对应,本文所用只适用于Visual Studio2017 x64,,平台工具集版本为v141的情况下。

3、数据包下载地址:http://www.openscenegraph.org/index.php/download-section/data(OpenSceneGraph-3.4 standard dataset)。

4、编码工具下载地址:https://cmake.org/download/ (CMake)。

如果下载不了,可以直接从我的资源里下载OSG源码、第三方依赖库、数据……CSDN最近改版,资源积分不能设置为0……

5、编译教程:http://www.osgchina.org/index.php?option=com_content&view=article&id=111:usevscompile&catid=95&Itemid=484

二、编译准备 
为了编译的顺利进行,将下载的文件组织如下: 
在D盘建立一个OSG的文件夹,然后将下载好的文件如下放置: 
D:\OSG\OpenSceneGraph:源码解压后放于此 
D:\OSG\3rdParty:第三方依赖库解压后放于此 
D:\OSG\data:数据包解压后放于此。

三、安装源码 
1、安装CMake之后,打开CMake -gui.exe。 
2、按下图所示,填写源码路径与结果路径。 

3、点击Configure,如下图所示进行设置,然后点击Finish。 
 
4、在第一张图的红色表格中找到ACTUAL_3RDPARTY_DIR,将其值设置为D:/OSG/3rdParty、找到BUILD_OSG_EXAMPLES,值设置为ON,找到CMAKE_INSTALL_PREFIX,值为第一步中的结果路径。然后再点config,进行配置。
5、点击Generate,然后等待建构完成。 如果觉得没配置对,重新配置后再点config进行配置,然后再点Generate生成,会将之前的工程冲掉。


四、编译 
1、在第三步的结果路径中,找到OpenSceneGraph.sln,将其用VS2017打开。 
在菜单栏选择生成——批生成,对All_BUILD进行生成,选择(Debug和Release两个版本),这段编译时间很长,大概 4-5个小时。如果前面步骤没有错误的话,这一步不会报错,只有警告。设置详情如下图所示: 
 
2、第1步完成后,再打开批生成对INSTALL也进行相应生成编译(上一步已勾选的二者要取消勾选)。这段时间相应会短一点。如图: 
 

五、环境变量 
以上步骤进行完成后,对系统变量作如下设置: 
1、添加系统变量:OSG_FILE_PATH,变量值为D:\OSG\data(与第二步中所建目录相对应)。 
2、在PATH变量中添加:第三步结果目录中的bin目录。 
配置完成后,可在cmd黑白框中输入osgversion或osglogo进行测试。 



六、新建OSG项目测试 
1、在VS2017下新建C++控制台程序。 
2、右键项目,选择“属性”,顶部平台选择x64,左侧配置属性选择“VC++目录”,在包含目录添加:第三步结果目录中的include目录。在库目录添加:第三步结果目录中的lib目录。具体情况如下图: 
 
3、打开项目属性的链接器,选择“输入”,在附加依赖项添加: 
OpenThreadsd.lib 
osgd.lib 
osgDBd.lib 
osgUtild.lib 
osgGAd.lib 
osgViewerd.lib 
osgTextd.lib 
注:在编译生成的lib文件中,每个lib文件有一对名称相似的文件,其中文件名最后一个字母为“d”的为Debug版本所使用的,没有“d”的为Release版本所使用的。 
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();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

运行,出现以下效果,说明配置成功。