0
点赞
收藏
分享

微信扫一扫

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译


前言

准备

git(不是必须)使用git得到的源码是3.7.0版本的

CMake

vs2019(VS017可以)

我这里用的vs2019

​​osg主页​​

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml

​​源码下载​​

Cmake编译源码

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_02


编译报错

CMake Warning (dev) at F:/Program Files/CMake/share/cmake-3.21/Modules/FindPackageHandleStandardArgs.cmake:438 (message):

The package name passed to ​​find_package_handle_standard_args​​ (PkgConfig)

does not match the name of the calling package (GTA). This can lead to

problems in calling code that expects ​​find_package​​ result variables

(e.g., ​​_FOUND​​) to follow a certain pattern.

Call Stack (most recent call first):

F:/Program Files/CMake/share/cmake-3.21/Modules/FindPkgConfig.cmake:70 (find_package_handle_standard_args)

CMakeModules/FindGTA.cmake:11 (INCLUDE)

CMakeLists.txt:751 (FIND_PACKAGE)

This warning is for project developers. Use -Wno-dev to suppress it.

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_03


报错原因:源码中不包含以下第三方库

  1. Freetype
  2. JPEG
  3. Jasper
  4. LibXml2
  5. ZLIB
  6. GDAL
    解决:依次下载这些库,并在CMake中配置这些库的路径
    当前(2020/04/14)中文网提供的依赖目前链接失效了,这里访问英文官网提供的第3方依赖:​​​http://www.openscenegraph.org/index.php/download-section/dependencies​​
  7. OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_04

  8. 上面一个是full,一个是small,随便选一个,我这里选的full
    small和full最大区别:感觉full多了boost库
  9. OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg编译_05

  10. 这里面包含了
  11. Freetype
  12. JPEG
  13. Jasper
  14. LibXml2
  15. ZLIB
  16. GDAL
    这几个库,话说选择osg组织真的变贴心了,我记得在2016年前这几个库都需要自己下载,编译生成lib和dll

下载OpenSceneGraph-Data-3.4.0.zip

​​osg_data-3.4.0下载​​

CMake编译源码

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_06

Open Project

在第三步的结果路径中,找到OpenSceneGraph.sln,将其用VS2019打开。

在菜单栏选择生成——批生成,对All_BUILD进行生成,选择(Debug和Release两个版本),这段编译时间很长,大概 4-5个小时。如果前面步骤没有错误的话,这一步不会报错,只有警告。设置详情如下图所示:

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_git_07

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_git_08


OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_09


第1步完成后,再打开批生成对INSTALL也进行相应生成编译(上一步已勾选的二者要取消勾选)。这段时间相应会短一点。如图:编译

真的是漫长等待啊,我机器大概用3~4个小时,有一个错误,不知道原因

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_10

将OSG添加到系统环境变量

以上步骤进行完成后,对系统变量作如下设置:

1、添加系统变量:OSG_FILE_PATH,变量值为E:\osg\OpenSceneGraph-Data(与第二步中所建目录相对应)。

2、在PATH变量中添加:第四步结果目录中的bin目录。 E:\osg\OpenSceneGraph_build_vs2019_x64\bin

配置完成后,可在命令提示符cmd中输入osgversion或osglogo进行测试,也可以输入osgviewer cow.osg,会出现下面的牛。 成功出现则说明系统配置成功。

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_11


OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_git_12


OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_13


osgversion

这里我是用git获得的源码是3.7.0,如果直接下载的源码就是3.6.5,感觉区别不大,2个版本我都编译过,只有一点不同:使用3.7.0编译得到的库是osg202版本,而osg3.6.5编译得到的库是osg161版本,见下图:

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_14

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg_15


注意2个版本不能混着用,osg没有向下兼容!!!!切记

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg_16

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_17


osglogo

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_18

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_19

osgviewer cow.osg

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg编译_20

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_21

新建OSG项目测试

1、在VS2019下新建C++控制台程序。

2、右键项目,选择“属性”,顶部平台选择x64,左侧配置属性选择“VC++目录”,在包含目录添加:第四步结果目录中的include目录。在库目录添加:第四步结果目录中的lib目录。具体情况如下图:

#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. OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg编译_22


  3. OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg编译_23


  4. OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg编译_24


  5. OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_git_25

%(PreprocessorDefinitions)
WIN32
_WINDOWS
_WIN32_WINNT=0x0A00
_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_DEPRECATE
CMAKE_INTDIR="Debug"

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_git_26


OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_27

osgViewerd.lib
osgTextd.lib
opengl32.lib
osgGAd.lib
osgDBd.lib
E:\osg\3rdParty\3rdParty_x64\x64\lib\zlibd.lib
osgUtild.lib
osgd.lib
OpenThreadsd.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib

把:E:\osg\OpenSceneGraph-OpenSceneGraph-3.6.5_build_vs2019_x64\bin

路径下的这几个dll拷贝到工程debug运行目录下,也可以根据你的需要选择dll

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_git_28

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_xml_29

​​工程源码下载​​

OpenSceneGraph-OpenSceneGraph-3.6.5源码编译_osg例子_30


举报

相关推荐

0 条评论