MAC OSX10.9 下编译使用OGRE1.9及CEGUI 0.8.3(二)OGRE Templates的使用

来源:互联网 发布:兔展微信场景制作软件 编辑:程序博客网 时间:2024/06/04 15:42

    前文说了OGRE依赖库的编译原理,本来接下来的工作应该是编译OGRE库及CEGUI的库,但因工作原因一直没有时间整理,今天难得空闲就先记录一下OGRE官方模板的使用吧,至于OGRE库和CEGUI库的编译基本上跟依赖库的编译差不多,用CMAKE配置好各个依赖库的文件及相应的属性---生成工程文件--Xcode打开工程文件,配置编译平台与最低兼容平台都为10.9编译为64位等等--然后先ALL BUILD---最后INSTALL,在工程文件夹下即可生成SDK文件夹。官网上有详细的说明,耐着性子看一看即可,主要是Xcode配置一定要正确。可以参考wiki的文章。如下:http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Building+Ogre

    今天说说OGRE官方模板的使用。OGRE Templates 是论坛上大神提供的一个官方模板,通过它我们可以方便的在Xcode上建立OGRE程序,只不过论坛上只有Xcode4+Ogre1.8可以使用的模板,升级Xcode5后出现了各种问题。在这里记录一下:

环境依然是OSx10.9+Xcode5+OGRE1.9

1:首先下载OGRE Templates的安装程序。我是在论坛下的,但是找不到当时的地址了,附上我网盘自己收藏的,需要的拿走。http://pan.baidu.com/s/1o659YVS

2:安装很简单,双击--下一步,下一步即可,跟装其他程序没什么区别。有一个群里的朋友反应Xcode5装这个模板会提示错误,不过我没有遇到,如果大家遇到可以google一下。

3:运行Xcode5 ,新建一个工程。Create a new Xcode project

4:左边IOS跟Xcode平台里面各有一个OGRE的选项,如果没有重新安装一下Templates试试。我们选择OSX平台里的模板,然后下一步


5:工程名自己输,如果不是在APP Store 发布的话其他的不用写。


下一步,选择一个保存位置。选择Create即可



6:同样,配置开发平台为10.9,


Build setting里面也一样



7:然后我们需要指定OGRE SDK的位置,在编译OGRE源码时选择Install编译后自动生成一个SDK文件夹,把它拷贝到一个英文目录下,然后将前文提到的OGRE依赖库同样拷贝到这个SDK文件夹下。记下SDK文件夹的完整路径。


8:Ogre模板里面其实已经配置好了各个头文件需要的路径,只不过是相对路径,另外1.9的SDK跟1.8也有所不同,具体配置步骤如下:

  ①首先我们需要添加一个名称为OGRE_SDK_ROOT的用户参数。如图:选择Add User-Defined Setting


然后在下面会自动生成一个属性,单击就可以重命名,然后配置属性值为刚才SDK文件夹所在的路径。如图:


②然后我们来编译一下,看看结果如何?

  首先会提示找不到boost的相关头文件

这个简单,吧boost的相关头文件在的目录加到Header search Path 里面就OK。但这个地方需要注意,这个模板里包含头文件时已经加了boost的前缀了,所以我们只需要修改属性到boost的第一层目录下即可,不要直接指定到头文件所在的文件夹,如图:


看到上面的OGRE_SDK_ROOT了么,我们之前配置的那个用户属性就是给这里用的,在这里组成一个完整的路径供Xcode使用,所以当你哪个头文件找不到的时候仔细研究一下这里,当时这个boost包含的时候我就没仔细看前面已经有boost的前缀了,以至于浪费了好长好长时间。。。。。

③OK,配置好boost在的文件夹后再编译一下 看看新的错误:仍然是头文件找不到:

对于这些头文件,我都从SDK那个文件夹里找到,直接把绝对路径复制过来,大家也可以选择使用模板属性里那种OGRE_SDK_ROOT的模式,但我比较懒。我最后的路径是这样的:

加一个路径就重新编译一次,直到不提示找不到头文件的错误。一定要仔细再仔细,我因为大小写的问题浪费了好多时间。

9:OK,头文件路径设置完,再次编译,你会遇到一个新的错误:

/Users/LiHang/Project/GUI/GUI/OgreFramework.cpp:145:19: No matching constructor for initialization of 'OgreBites::SdkTrayManager'双击错误,跳到出问题的地方来看一下:


这个错误的主要原因是OgreBites::SdkTrayManager()这个构造函数不存在,因为1.9里面已经不用这个函数了。我从网上搜索的解决办法是这样的:

http://blog.csdn.net/niteip/article/details/13169755



其实这个函数这么改也不对,而且这个函数是OGRE自带的GUI系统,因为我需要使用CEGUI作为GUI系统,这个地方实际可以直接删掉,后文会详述,此处就先这么改吧。

10:继续编译,然后继续出现错误,如图。不要气馁,我开始编译的时候遇到过各种奇葩错误,没有中文资料,只能一点一点的看英文,习惯了都。


这个错误是Xcode很经典的一个错误,我当时为了解决这个错误浪费了整整2周的时间,不要笑话我,我每天只能挤时间来研究。不说废话,我们继续:

造成这个

(null): Linker command failed with exit code 1 (use -v to see invocation)错误的原因主要是没有相应的运行库,这种情况一般出现在你调用了别的库,Xcode能正确的找到头文件,但是运行库文件找不到。造成这种情况我主要犯过一下两个错误

第一是你调用的库文件跟当前平台不兼容,比如你现在编译的是32位软件,但是你使用的是64位的库,等等类似的情况,解决的办法就是自己编译所有的库,然后属性都配置的一样。主要是这里要配置的一样:Architectures等等,因为我其他的库都是64位,所以这个地方也选择仅仅64位如图:



第二个原因就是你的库编译对了,但xcode找不到。我们现在遇到的就是这个问题。解决也很简单,首先我们打开OGRE SDK文件夹看看里面的库文件:


库文件在SDK/lib/debug/Debug里面,全都是framework的形式,这是苹果一个很好的引用别的库的方式,你无需考虑库文件到底在哪,只需要吧这些framework导入到系统里就可以了。更详细的知识在此不介绍。导入的步骤如下:


点那个加号,添加进去就可以。不仅仅是OGRE库,所有的Frame形式的库都是这么用。这里都加进来吧,我懒得一个一个添加。


然后再次编译。

然后是找不到OIS库,吧依赖库里的OIS.lib加进来就行,跟OGREframework一样,同样的还有boost的库。

10:再次编译,这样终于就编译成功了。运行,可以得到以下界面:


说明OGRE初始化完成,真正点OK进去的时候,会发现这样的错误:


这个错误真的很烦人,我同样花了好长时间来解决。原因如下:

OGRE1.9的SdkTrayManager较1.8有较大的变化,因为我用不到,所以没有研究,详情可以看一下OGRE的doc,里面有详细的用法。我的解决方案是直接把相关的函数注释掉。


然后下面还有一个


OK把这两个地方注释掉,其他的地方就木有太大问题了,OGRE算是正常运行。



建议大家使用OGRE Templates之前,一定要编译好OGRESDK,然后运行里面的例子看看,例子正常运行了,然后再来使用Templates建立自己的程序,否则整个过程会耗费大量的时间。OK,睡觉!








0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝戒奶不吃奶粉怎么办 三个月大婴儿不吃奶粉怎么办 三个月大的婴儿不吃奶粉怎么办 40天宝宝肚脐凸怎么办 6个月婴儿消化不好怎么办 2个月婴儿消化不好怎么办 10月婴儿不吃饭怎么办 9个月宝宝不吃饭怎么办 十个多月的宝宝便秘怎么办 十个多月宝宝便秘怎么办 8个月宝宝过敏怎么办 宝宝二十个月便秘怎么办 7个月宝宝便秘拉不出怎么办 二十六个月宝宝便秘怎么办 八个月宝宝吃鸡蛋过敏怎么办 8个月宝宝 吃盐怎么办 40多天婴儿拉肚怎么办 刚出生婴儿拉肚怎么办 20多天婴儿拉肚怎么办 米汤煮的太稠了怎么办 两岁宝宝不吃蔬菜怎么办 两岁宝宝不爱吃蔬菜怎么办 四个月宝宝头有点歪怎么办 宝宝吃过了还闹怎么办 ddrops d3吃多了怎么办 ddrops d3滴多了怎么办 维生素d滴多了怎么办 ddrops最后滴不出来的怎么办 ddrops一次滴3滴怎么办 小孩子头睡偏了怎么办 7岁儿童头睡偏了怎么办 婴儿后脑睡平了怎么办 六个月宝宝免疫力低怎么办 十个月宝宝食烧怎么办 6个月宝宝感冒了怎么办 5个月宝宝腿短怎么办 5个月宝宝太瘦怎么办 宝宝喝了浓奶粉怎么办 一岁把尿不尿怎么办 五个月的宝宝大便干燥怎么办 婴儿便秘怎么办什么方法最有效