OpenSceneGraph 3.6.4 源代码编译(x86) + chm 文档生成

时间:2024-03-07 08:07:12
导读

  本文将介绍在 Windows 平台下,OpenSceneGraph 源码的编译、发布、以及 chm 文档生成。文章将使用 Visual Studio 2015 ,以 3.6.4 版本为例,编译生32 位 (x86) 版本 进行说明。

      最后一小节提供 3.6.4 版本编译的发布 (OpenSceneGraph-3.6.4-VC2015-x86 )、帮助文档(OpenSceneGraphReferenceDocs-3.6.4.chm)和 学习文档 的下载,以供参考。

      本文链接:https://www.cnblogs.com/BensonLaur/p/12697333.html


目录
  1. 入门与准备
  2. 编译源码
  3. 发布与开发
  4. 文档生成
  5. 相关下载
1、入门与准备

OpenSceneGraph是一个开源的三维引擎,应用广泛,可通过相关网站进行进一步的了解

官方网站(英文):http://www.openscenegraph.org/

中文网站:http://www.osgchina.org/

同时这里推荐 《OpenSceneGraph三维渲染引擎设计与实践》一书,个人认为比较适合新手入门,在本文最后 “相关下载” 章节,可以下载

 

2、编译源码

这里使用 Visual Studio 2015, 对 OpenSceneGraph 2.6.4 源码进行编译 32 位(x86)版本

工具准备

版本控制软件 git , 用于下载源代码

git   (下载)

安装(编译)工具 CMake ,用来构建具体平台的项目文件(这里用来构建 VS 的解决方案 Solution)

cmake (下载)

 

如果想要自己生成代码文档,则需要额外准备:

文档自动生成工具 doxygen , 用于更具代码注释自动生成参考文档 

doxygen   (下载)

图像可视化软件 graphviz, 这里用来辅助构建文档中的图表 (这里下载 Stable 2.38 Windows install packages)

graphviz (下载)

 

下载并安装以上工具

 

下载源代码进行编译
(1)下载源代码

参考 osg 中文网下载说明,使用 git 下载代码(3.6.4 版本)到本地,(个人建议单独创建一个父目录用来存放 osg 相关的代码和数据)

git clone --branch OpenSceneGraph-3.6.4 https://github.com/openscenegraph/OpenSceneGraph.git

 

这里下载到 D:\osg 目录,如下:

 

(2)下载第三方依赖

 OpenSceneGraph 本身没有包含读取 png、jpeg 的模块,为了编译的发布功能相对完善,这里先下载依赖的第三方模块

 当前(2020/04/14)中文网提供的依赖目前链接失效了,这里访问英文官网提供的第3方依赖: http://www.openscenegraph.org/index.php/download-section/dependencies

这里下载其中 使用VS2015 编译的版本

由于这里使用 VS2015 编译 x86 版本,这里下载 v140-x86 版本依赖,放置到 D:\osg\3rdParty  目录下

 

 

(3)使用 cmake 构建 VS 项目

 打开安装 CMake 目录下的 cmake-gui.exe 

 

 将第(1)步下载的源代码中的 CMakeLists.txt 拖放到软件中,如下:

 

 构建代码的路径 最好选择另一个和 源代码不同的路径,这样构建的数据和源代码目录分离数据比较清晰不容易混乱。

设置第3方库目录,比如这里使用的 : D:/osg/3rdparty

如果需要想要构建使用例子(对新手有帮助,不过编译会多费些时间),可以勾选 BUILD_OSG_EXAMPLES

如果需要自己构建文档,可以勾选 BUILD_DOCUMENTATION

 

如果勾选 BUILD_DOCUMENTATION,那么需要如下图,勾选 “Advanced” , 确保 DOXYGEN_DOT_EXECUTABLE DOXYGEN_EXECUTABLE 指定到安装的 Graphviz 和 doxygen 对应的文件,如下图所示

 

 

 点击 “Configure” 再次确认一下配置,确认完毕后,点击 "Generate" 生成解决方案,成功生成后,点击 “Open Project” 可打开生成的 VS 方案

 

 最后,在项目中,分别在 DebugRelease 下构建 ALL_BUILD 项目即可:

 

3、发布与开发
发布

编译完成后,如果要安装发布到之前 CMake 中指定的目录 C:/Program Files(x86)/OpenSceneGraph 

 

 可以构建 INSTALL 项目,将自动完成复制安装(DebugRelease 需要分别安装)

 

 

 执行成功后,安装目录下将出现对应的文件如下:

 

复制安装成功后,为了后续开发,需要配置一些环境变量:

 

 

设置 OSG_3RDPARTY_DIR 为刚才下载的第三方库的路径  D:\osg\3rdParty

设置 OSG_NOTIFY_LEVEL 打印提醒等级为 WARN

设置 OSG_VERSION 为当前使用的版本号 3.6.4 (方便如果升级版本的时候使用)

设置 OSGDIR 为当前代码复制安装的目录 

在 Path 中添加路径:%OSGDIR%\bin;%OSG_3RDPARTY_DIR%\bin;%OSGDIR%\bin\osgPlugins-%OSG_VERSION%;

 

验证

为了方便快速验证是否安装成功,可以打开命令行,执行 osgversion.exe 

 

如果想测试运行更多数据,可以下载使用官方提供的标志示例数据 http://www.osgchina.org/show-list.php?id=38

 

 

 并配置 配置 OpenSceneGraph 内部专用的环境变量 OSG_FILE_PATH  如下:

 

OSG_FILE_PATH  是 osg 内部约定专用的变量,当指定打开文件不指定文件名时,osg自动搜索该目录

设置完后,命令行可执行:

 

 或者:

 

开发测试

 本地创建一个 VS 控制台应用程序项目

 

 在项目属性页中,设置 C/C++ -> General(通用)->Additional Include Directories (额外include 目录),添加 $(OSGDIR)\include

 

  在项目属性页中,设置 C/C++ -> Linker (链接器) ->General->Additional Library Directories (额外库目录),添加 $(OSGDIR)\lib

 

 在项目属性页中,设置 C/C++ -> Linker (链接器) ->input->Additional Dependencies 下,  添加需要导入的 lib 

 

 

 这里debugrelease 需要区分导入,debug 版本库名称有 d 后缀

这里根据我生成的库文件,添加 debug 版本如下:

OpenThreadsd.lib
osgd.lib
osgAnimationd.lib
osgDBd.lib
osgFXd.lib
osgGAd.lib
osgManipulatord.lib
osgParticled.lib
osgPresentationd.lib
osgShadowd.lib
osgSimd.lib
osgTerraind.lib
osgTextd.lib
osgUId.lib
osgUtild.lib
osgViewerd.lib
osgVolumed.lib
osgWidgetd.lib

这里根据我生成的库文件,添加 release 版本如下:

OpenThreads.lib
osg.lib
osgAnimation.lib
osgDB.lib
osgFX.lib
osgGA.lib
osgManipulator.lib
osgParticle.lib
osgPresentation.lib
osgShadow.lib
osgSim.lib
osgTerrain.lib
osgText.lib
osgUI.lib
osgUtil.lib
osgViewer.lib
osgVolume.lib
osgWidget.lib

配置完毕后,添加代码如下:

#include "stdafx.h"
#include <osgDB\ReadFile>
#include <osgViewer\Viewer>

int main()
{
    osgViewer::Viewer viewer;
    viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
    return viewer.run();
}
#include "stdafx.h"
#include <osgDB\ReadFile>
#include <osgViewer\Viewer>

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

 

运行效果:

 

4、文档生成

 如需生成文档,可以编译  doc_openscenegraph 

 默认情况下,编译生成的只是 html 文档,如果想要生成 chm 文档,还需要再 在 doxygen 配置文件 (doxyfile)中:

#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML          = YES
HTML_OUTPUT            = OpenSceneGraphReferenceDocs
HTML_FILE_EXTENSION    = .html
HTML_HEADER            =
HTML_FOOTER            = "D:/osg/OpenSceneGraph-source-3.6.4/doc/Doxyfiles/custom_Footer.html"
HTML_STYLESHEET        =
HTML_DYNAMIC_SECTIONS  = NO
GENERATE_DOCSET        = NO
DOCSET_FEEDNAME        = "Doxygen generated docs"
DOCSET_BUNDLE_ID       = org.doxygen.Project
GENERATE_HTMLHELP      = YES
CHM_FILE               = "../OpenSceneGraphReferenceDocs-3.6.4.chm"
HHC_LOCATION           = "C:/Program Files (x86)/HTML Help Workshop/hhc.exe"
GENERATE_CHI           = NO

将红色部分 GENERATE_HTMLHELP 设置为 YES参考

 

 这样,在编译成功后,在编译目录下则会生成 chm 文档:

 

 

 

5、相关下载

 这里已经编译好了  OpenSceneGraph-3.6.4-VC2015-x86 

 连同编译好的参考手册 OpenSceneGraphReferenceDocs-3.6.4.chm

 和 OpenSceneGraph 学习电子书 《OpenSceneGraph三维渲染引擎设计与实践》

 放置到了百度云盘

百度云盘:https://pan.baidu.com/s/1SX8nu83IvnmKmj6pwI9vxg
密码   :iplk