||
首先讲结论,不建议用OSG+QT做开发环境,而是直接用visual studio。
鉴于搭建环境会经常出错,这里记录下来(本篇是基于http://blog.csdn.net/bbppbb/article/details/45697731 完善的)。
1. 软件准备
A. qt-opensource-windows-x86-vs2010-4.8.6.exe 用于编译osg时使用(先安装)
B. qt-opensource-windows-x86-msvc2010_opengl-5.3.0.exe 用于开发时使用(由于4.8.6无creator,但是4.8.6支持opengl,而不是qt5自己写的库)
C. OpenSceneGraph-3.2.1-rc2.zip,以及第三方插件osg-3rdparty(参考https://github.com/bjornblissing/osg-3rdparty-cmake)
freetype-2.6.tar.gz
giflib-5.1.1.tar.gz
glut37.zip
jpegsr9a.zip
lpng1621.zip
minizip-master.zip
osg-3rdparty-cmake-master.zip
tiff-4.0.4.zip
zlib128.zip
D. cmake-2.8.12.2-win32-x86.exe
E. cn_visual_studio_2010_ultimate_x86_dvd_532347.iso,注意是32位,先安装
环境:OS:windows 8.1 64bit
工作目录:D:/qt/
2. 编译osg-3rdparty
a. 打开cmake-gui选中osg-3rdparty源代码,并设定想要放置工程的目录,如下图:
点击Configure按钮,选择vs2010, 生成的结果如下图:
配置(注意 坑爹的反斜杠):
点击configure:
点击generate。
然后在vs2010中打开该项目:
右键ALL_BUILD->生成,完成会在工程所在目录下面生成lib目录其中有两个目录Release和Debug,然后再右键点击INSTALL工程分别在Debug和Release模式下右键生成,就会在工程目录看到如下文件夹3rdParty。
目录如下:
把目录调整一下,去掉v100-x86,直接把下面的文件剪切到上一级,即如下:
目的是为了方便OSG的Cmakelist设置。(放在和后面OSG源代码同级目录下)
3. 编译OSG
解压OSG源代码文件,本文要使用qt4的库(注意)来编译OSGQT的组件,因此这里需要修改osg根目录下的Cmakelist.txt文件(非常重要),添加如下两句(在文件开始添加即可)
set(DESIRED_QT_VERSION "4" CACHE STRING "")
set(CMAKE_PREFIX_PATH "D:\qt\4.8.6" CACHE PATH "")
(注意上面的路径修改成你QT4安装的路径)
重新打开cmake-gui,设置源代码和工程目录,如下:
将上一节生成的3rdParty目录拷贝到和OSG代码同级目录,我这里就是D:qtosgosg-qt4-vs2010,点击Configure之后选择vs2010,想要编译osg自带例子的话勾选如下(这里没勾选)
选好之后可以重新点击Configure按钮将红色选项确定一下,注意查看变红的选项,如果觉得都配置可以就一直点击Configure,一直到全部选项不为红,再点击Generate按钮,生成最后的工程文件。工程目录如下:
使用vs2010打开工程(一定要用管理员权限打开vs,否则给生成的库install不了c盘上),在debug和release模式下分别生成ALL_BUILD,等一个小时左右后,再点击INSTALL,如下图:
最后,生成在C:Program Files (x86)OpenSceneGraph:
4. 配置环境变量:
在PATH 最后加上:
C:Program Files (x86)OpenSceneGraphbin;D:qt4.8.6bin;C:Program Files (x86)OpenSceneGraphshareOpenSceneGraphbin
5. QT中创建项目
用qt5.3 creator新建项目,注意option里的构建用4.8.6的:
在项目-》 构建和运行里,构建步骤加上install,如:jom.exe install in D:qtprojectiBuilding_haidianyuan
在项目名.pro文件里加上:
QT +=core gui opengl
以及:
#自定义build的输出路径,以及子文件夹,如data/CONFIG(release,debug|release):DESTDIR=build/releaseCONFIG(debug,debug|release):DESTDIR=build/debugOBJECTS_DIR=$$DESTDIR/.objMOC_DIR=$$DESTDIR/.mocRCC_DIR=$$DESTDIR/.qrcUI_DIR=$$DESTDIR/.uidata.path=$${DESTDIR}/datadata.files=data/*INSTALLS+=data
#添加依赖库,及头文件INCLUDEPATH+=$$PWD/3rdparty/OpenSceneGraph/includeDEPENDPATH+=$$PWD/3rdparty/OpenSceneGraph/include
win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgelse:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgdelse:unix:LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losg
win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgDBelse:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgDBdelse:unix:LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgDB
win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgViewerelse:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgViewerdelse:unix:LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgViewer
win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgUtilelse:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgUtildelse:unix:LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgUtil
win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgQtelse:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgQtdelse:unix:LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgQt
win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgGAelse:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgGAdelse:unix:LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-losgGA
win32:CONFIG(release,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-lOpenThreadselse:win32:CONFIG(debug,debug|release):LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-lOpenThreadsdelse:unix:LIBS+=-L$$PWD/3rdparty/OpenSceneGraph/lib/-lOpenThreads
点击build,然后run,若成功,则大功告成。
哎,简直要命,所以还是回到最开始那句话,别用qt了,还是用vs吧,坑太多。
加我私人微信,交流技术。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-17 19:33
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社