说明
1. 本文主要用于配置OSG3.4.0在Qt5.6上使用MSVC2015进行编译
l 前期工作:安装好Qt5.6及MSVC2015,具体操作请参考:
http://blog.sina.com.cn/s/blog_89a45b020102whg2.html
l 本文在上一篇博客的基础上进行环境搭建,也是在虚拟机中完成的。系统和环境变量都比较干净,因此环境搭建过程有较好的参考性。
2. 主要内容:
l 编译osg3.4.0源代码为Qt5.6可以使用的库文件
l 配置osg3.4.0在Qt中的环境,以一个工程作为示例
1. OpenSceneGraph 3.4.0源代码:
http://www.openscenegraph.org/index.php/download-section/stable-releases/206-openscenegraph-3-4-0-released
2. Cmake-gui,下载安装包
https://cmake.org/download/
1. 安装CMake-gui,Install Options我选择了“Add CMake to the system PATH for all users”,其它默认安装
2. 以管理员身份打开“VS2015 X64 Native Tools Command”,进入一个命令行中
3. 从该命令行中进入CMKAE-gui.exe目录下(默认安装位置为:C:\Program Files (x86)\CMake\bin),输入cmake-gui.exe并执行,将弹出CMake-gui界面
4. 解压缩osg3.4.0的源代码到“C:\OpenSceneGraph-3.4.0”目录,并新建一个工程目录“C:\osg3.4.0”,设置CMake的“where is the source code”和“where to build the binaries”如图所示,即刚才的源代码目录和工程目录。点击Configure,后选择工程项目为“NMake Makefiles JOM”,点击Finish后得到如图所未,由于未将Qt的Jom添加到环境变量中,因此CMake失败
5. 临时添加Qt的Jom.exe以及qmake.exe到环境变量中。
l 关闭CMake-gui,
l 在刚才的命令行中输入“path %path%;C:\Qt\Tools\QtCreator\bin”并执行,Jom.exe在该目录中
l 输入“path %path%;C:\Qt\5.6\msvc2015_64\bin”并执行,qmake.exe在该目录中
l 再次用命令行打开CMake-gui,点击Config,成功了一半
6. 重新配置CMake-gui
l 修改CMAKE-INSTALL_PREFIX参数,该目录为生成的库文件目录,将其修改到期望的地方,本文设置为“C:/osg-lib”
l 勾选BUILD_OPENTHREADS_WITH_QT
l 修改CMAKE_BUILD_TYPE,默认为Debug版本,也可以修改为Release版本,本文以Debug版本为例,Release好像有点问题,待研究
l 点击Configure再次配置
l Configuring done后点击Genirate生成工程,Genorating done后关闭CMAKE-GUI。
l 可以看到工程目录下出现了很多文件,这些文件可以被Jom编译
7. 编译过程
l 从命令行中进入工程目录,并执行“jom”开始进入漫长的编译时间。
l 编译完成后再次输入并执行“jom install”,开始生成库文件*.lib
8. 至此,Debug版本的库文件已经生成,在目录C:\osg-lib下
9. 关于Release版本的库
l 只需要在第6步中将CMAKE_BUILD_TYPE参数修改为Release, 将CMAKE_DEBUG_POSTFIX的参数d删除即可,其它操作相同
l 上面将CMAKE_DEBUG_POSTFIX的参数d删除主要是为了避免生成的库文件后面带有d,比如osgd.lib会变成osg.lib,为了将Debug的库与Release库分开
说明:
由于Qt完全基于C++,因此OSG在MSVC下能运行的示例程序,均可直接在Qt下运行。
1. 新建一个Qt工程,如下图所示,采样console工程,编译套件务必使用MSVC2015 64bit
2. 向工程中添加库文件
l 在工程名上右键“添加库”->“外部库”,随便在刚才生成的库文件中找个.lib打开,如下图配置
l 修改自动生成的.pro文件的库配置部分,强行将所有的库文件包含到工程中,建议采用相对路径,采用绝对路径可能会导致无法读取到头文件(很奇怪)
3. 添加main.cpp文件,将osg源代码中的osggeometry.cpp的code复制到工程中的main.cpp中即可,
4. 由于缺少osg的dll文件,程序估计不能运行,有两种方法解决:库文件在目录C:\osg-lib\bin中
l 将库文件的dll文件(包括osgPlugins-3.4.0文件夹)全部放到QT生成的可执行文件的要目录中,如图
l 或者将库文件的目录包括到环境变量中,如图
5. 运行Qt程序即可
至此已经可以使用Qt Create进行OSG编程了,关于如何将OSG嵌入到Qt Widget里,后面有空再写个教程