OSG编译安装-MSVC
1、准备工作
1.1 环境
-
windows10
-
-
-
1.2 osg下载
-
osg
-
-
osg源码(openscenegraph)
-
-
也可使用git下载:
git clone --branch openscenegraph-3.6.5 https://github.com/openscenegraph/openscenegraph.git
-
-
依赖库(3rdparty)
-
-
这里选择已经编译好的
-
-
数据资源(openscenegraph-data)
-
-
这里选择最新版
-
2、cmake编译
-
打开cmake,将openscenegraph文件夹下的cmakelists.txt文件拖进cmake中,创建build文件夹并在cmake中指定路径;
-
点击configure,选择vs2017、x64(由于下载的依赖库为64位,所以这里如果要编译32位的只能自己编译依赖库),注意如果是安装了多个版本vs,需要选择specify native compilers,我这里只安装了一个版本;
-
指定依赖库路径actual_3rdparty_dir
-
勾选build_osg_examples(可选择不勾选)
-
修改安装路径cmake_install_prefix
-
点击configure直到没有红色,然后点击generate,等待生成vs解决方案,生成完成后点击open project打开vs
3、visual studio编译
-
打开解决方案后,选择debug、x64
-
右键all_build,点击生成,等待两小时就可以编译完成,然后选择release再编译一次
-
右键install,点击生成就可以在之前指定的安装路径下(cmake_install_prefix)生成编译好的文件了
-
将依赖库和数据资源文件拷到编译后的文件路径处
4、添加环境变量
-
打开系统环境变量
-
添加如下环境变量,注意路径换成自己的,然后保存
* openscenegraph-data环境配置:打开系统环境变量,点击新建,输入openscenegraph-data路径,重启电脑使环境变量生效
5、测试安装
-
可测试命令
-
osgversion
-
osglogo
-
osgviewer
-
-
打开cmd
-
输入:osgversion
-
输入:osglogo
-
输入:osgviewer d:\osg\openscenegraph-data\cow.osg 或osgviewer cow.osg
6、qt程序
-
新建一个qt工程,选择编译器位msvc2017-x64(需要配置)
-
打开.pro文件,添加下列代码(路径换成自己的)
includepath += d:/osg/install/include dependpath += d:/osg/install/include win32:config(release, debug|release): libs += -ld:/osg/install/lib/ -losg else:win32:config(debug, debug|release): libs += -ld:/osg/install/lib/ -losgd win32:config(release, debug|release): libs += -ld:/osg/install/lib/ -losgviewer else:win32:config(debug, debug|release): libs += -ld:/osg/install/lib/ -losgviewerd win32:config(release, debug|release): libs += -ld:/osg/install/lib/ -losgdb else:win32:config(debug, debug|release): libs += -ld:/osg/install/lib/ -losgdbd
-
或者右键工程,选择添加库
-
选择需要添加的库,然后点击确认即可
-
添加下列代码
#include "widget.h" #include <osgviewer/viewer> #include <osgdb/readfile> int main(int argc, char *argv[]) { qstring osgpath = "d:/osg/openscenegraph-data/avatar.osg"; // 换成自己的路径 osgviewer::viewer viewer; // 创建查看器 osg::node * node = new osg::node; node = osgdb::readnodefile(osgpath.tostdstring()); // 读取模型文件,赋值给节点指针 viewer.setscenedata(node); // 查看器中添加该节点 return viewer.run(); // 运行查看器 }
-
编译运行结果如下
7、编译好的库
链接:https://pan.baidu.com/s/1ufnbj0fuazkfe3xrwnvtda
提取码:66tf