OSG+QT5+vs2010编译

OSG+QT5+vs2010编译

转自:http://www.bubuko.com/infodetail-804634.html

参考:http://www.07net01.com/2015/05/841214.html

参考:http://blog.csdn.net/bbppbb/article/details/45697731

标签:openscenegraph   osg   qt5   vs2010   

OSG+QT5+vs2010编译

作者:JTR@BNU

 本文属于原创,转载请注明出处。

由于网上没有找到关于编译QT5环境下的OSG,自己就研究了下,记录下整个过程,希望能帮到大家。

1. 准备工作

下载源代码:

A、openscenegraph 3.2.1(当前最新的realease版本)

http://www.openscenegraph.org/downloads/developer_releases/OpenSceneGraph-3.2.1.zip

 

B、osg-3rdparty

https://github.com/bjornblissing/osg-3rdparty-cmake

 

C、Cmake  3.2.2(当前最新)

http://www.cmake.org/files/v3.2/cmake-3.2.2-win32-x86.exe

 

环境介绍:

OS:windows 7 64bit

IDE: visual studio 2010 旗舰版

QT:Based on Qt 5.3.1(MSVC 2010, 32 bit)

 

2. 编译osg-3rdparty

a. 打开cmake-gui选中osg-3rdparty源代码,并设定想要放置工程的目录,如下图

技术分享

技术分享

点击Configure按钮,选择vs2010如下图
 
 技术分享技术分享

技术分享

 

技术分享
c. 配置好第三方库源代码的位置,如下图,第三方源代码可以在Readme.md中找到下载链接

技术分享技术分享


 
d. 纠错图中glut实际采用的是glut-3.7,所有配置如下图,并且点击Configure之后点击Generate,如下图
 
技术分享技术分享



e. 在vs2010中打开工程,右键ALL_BUILD->生成,完成会在工程所在目录下面生成lib目录其中有两个目录Release和Debug,就是我们想要的osg-3rdparty文件。或者在项目中找到INSTALL工程分别在Debug和Release模式下右键生成,就会在工程目录看到如下文件夹3rdParty
 

技术分享技术分享


我编译的目录结构如下

技术分享技术分享
 
可以看出下面的子目录显示了对应的编译环境,使用的vs2010,并且是32bit系统,我们需先做好准备将目录变成如下结构,是为了方便OSG的Cmakelist设置。(放在和OSG源代码同级目录下)
 技术分享

技术分享

3. 编译OSG

a. 解压OSG源代码文件,本文要使用qt5的库来编译OSGQT的组件,因此这里需要修改osg根目录下的Cmakelist.txt文件(非常重要),添加如下两句(在文件开始添加即可)


set(DESIRED_QT_VERSION "5" CACHE STRING "")
set(CMAKE_PREFIX_PATH "C:\Qt\Qt5.3.1\5.3\msvc2010_opengl" CACHE PATH "")


(注意上面的路径修改成你QT5安装的路径)


重新打开cmake-gui,设置源代码和工程目录,如下

 


 技术分享技术分享


b. 将上一节生成的3rdParty目录拷贝到和OSG代码同级目录,我这里就是D:/osg-qt5(32bit)-vs2010/。
Configure之后选择vs2010,如下

 

技术分享技术分享


 
想要编译osg自带例子的话勾选如下(这里勾选了)
 

技术分享

技术分享


c. 选好之后可以重新点击Configure按钮将红色选项确定一下,注意查看变红的选项,如果觉得都配置可以就一直点击Configure,一直到全部选项不为红,再点击Generate按钮,生成最后的工程文件。工程目录如下
 

技术分享技术分享


d. 使用vs2010打开工程,如下


 技术分享技术分享


e. 然后右键ALL_BUILD工程,生成,之后就是漫长漫长的等待,去吃饭,去喝咖啡吧……….


f. 最后右键INSTALL工程生成。

 

4. 总结

在网上找了很久编译osg的教程都是针对qt4的,这里研究了下qt5,环境下编译osg,记录下来希望能帮助大家。有什么不对的地方还请指出。

 

文章二:OSG3.2+Qt5.2.1+VS2012+OSGEarth 2.5编译问题记录

转自:http://www.cnblogs.com/yanhuiw/p/3788811.html

问题1:CMake Error at D:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:16 
(message):
Failed to find "glu32" in "" with CMAKE_CXX_LIBRARY_ARCHITECTURE "".

两种方式:
1.cmakelist
我的这个文件在C:/ProgramFiles/Microsoft SDKs/Windows/v7.0A/Lib/x64中,可以用VS2010打开CMakelists.txt( 
用记事本打开会去掉代码排版格式),加入一行代码(注意路径中是 / 而不是 \ ): SET(CMAKE_PREFIX_PATH 
"C:/Program Files/MicrosoftSDKs/Windows/v7.0A/Lib/x64")(笔者采用的是该方法)

2.其他下面的qtguiconfigExtras.cmake

win8:
set(CMAKE_LIBRARY_PATH "C:\\Program Files (x86)\\Windows Kits\\8.0\\Lib\\win8\\um\\x64")
in Qt5GuiConfigExtras.cmake

只能绕道而行,把_qt5gui_find_extra_libs(OPENGL "glu32;opengl32;gdi32;user32" "" "")给注释掉了。

自己添加对glu32;opengl32的引用。

如果还有gdi32错误,从Qt5GuiConfigExtras.cmake把_qt5gui_find_extra_libs(OPENGL 
"glu32;opengl32;gdi32;user32" "" "")修改为_qt5gui_find_extra_libs(OPENGL "glu32;opengl32" "" "")

Qt版本更新但是cmake不能主动修改问题:
直接修改cmakechche.txt里面qt相关的路径,批量替换

 

osgearth2.5编译问题:

1.nvcore/nvcore.h: No such file or directory,memory.h错误找不到nvcore/nvcore.h,把编译osg所用第三方库的 
memory.h删除

 

2.QT_INSTALL_LIBS as "D:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib" but QtCore could not be found ther

这个是因为添加qt5库支持,可以添加qt5支持。从osgearth的cmakelist文件找到相关支持的文本,粘贴过来

posted @ 2015-11-12 16:25  flylong0204  阅读(1643)  评论(0)    收藏  举报