【转】編譯Ogre1.9 IOS Dependencies及Ogre Source步驟及相關注意事項…
http://makedreamvsogre.blogspot.tw/2014/01/ios-dependenciesogre-source.html
可能有人會想問我為什麼要自行編譯IOS Dependencies,主要是因為Ogre提供PreBuild的版本是用C++11編譯,當使用到一些ThirdParty Library沒辦法使用C++11編譯的時候或沒有Source Code的ThirdParty Library,這就很重要了(比方Particle Universe 1.6),在此跟大家分享一下相關心得,希望能達拋磚引玉的效果…
- 安裝hg
- 安裝cmake
- hg clone http://bitbucket.org/sinbad/ogre/ -u v1-9
- hg clone https://bitbucket.org/cabalistic/ogredeps 到Oger的Source folder根路徑
- $(HOME)(例:/Users/akilar)底下,建立.bash_profile檔案,並填入export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/applications/CMake2.8-8.app/contents/bin:$PATH,最後一個為Camke的路徑,要看你是什麼版本,前面為預設系統路徑,一定填好,否則可能會發生ls命令找不到的問題,這個動作主要是讓command line視窗可以找到camke的指令。
- 使用cmake ide介面建立ogredeps專案,在ogredeps下指定Build Folder(也就是where to build the binaries = ...($HOME)/Ogre_src_v1-9-0/ogredeps/Build,並執行Configure
- 之後將Cmake選項裡的CMAKE_OSX_SYSROOT裡參數,指定到iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk,再按一次Configure(這個動作的目的,是讓他產生IOS專案,而不是MAC專案)
- 之後再按Generate即可產生專案
- 為了建立Arm64的zip lib,需要在gzguts.h裡加入以下的定義,否則編不過(因為檔案IO在arm64下不再定義於#include )
//on 64, base io functions are in
#ifndef _WINDOWS
#include
#endif - 接下來把OIS裡的Cocoa及Mac開頭的檔案,移除Reference(這個動作是指移除掉mac reference code的部份),並加入iphone的相關code,注意,Add的時候不要選錯Target。
- 再來是將所有的Target專案設定改為:
a.Architectures:
1.Architectures設成Standard architectures ( include 64-bti)(armv7, armv7s, arm64):這個意思
是包含32bit及64bit的設定,產生所有的architectures libs,這樣才行發佈到所有的
devices.
2.Build Ative Architecture Only不要設成Yes,這樣沒辦法生成所有的lib
b.Build Options
1.Compiler for C/C++/Objective-C設成Default compiler (Apple LLVM 5.0),xcode 5.0之後就
只有這個可以用,舊專案轉換過來的時候,可以會設成不存在的compiler的設定,要
記得來改
c.Deployment
1.IOS Deployment Target設到6.0以上,沒辦法再低,因為這樣沒辦法建立 arm64的執行
檔
d.Apple LLVM 5.0 - Language
1.C Language Dialect設成GNU99[-std=gnu99],由於Partice Universe目前沒辦法使用C++11
編譯,之後的C++專案又沒辦法指定C++11,這裡統一使用GNU,記得所有相關專
案設定成統一即可
e.Apple LLVM 5.0 - Language - C++
1.C++ Language Dialect設成GNU++98[-std=gnu++98]由於Partice Universe目前沒辦法使用
C++11編譯,之後的C++專案又沒辦法指定C++11,這裡統一使用GNU,記得所有相
關專案設定成統一即可
2.C++ Standard Library設成libstdc++(GNU C++ standard library)由於Partice Universe目前沒
辦法使用C++11編譯,之後的C++專案又沒辦法指定C++11,這裡統一使用GNU,記
得所有相關專案設定成統一即可
PS:
1.之後所有專案設定都遵照上述方式指定,我稱之為基礎專案設定
2.Compiler Default所代表的值沒辦法確認,因為舊專案在新的Xcode開啟後,會自動改
成Comipler Default或沒辦法確認的值,因此最好自行手動指定好,不要信任Compiler
Default. - 接下來就可以把相關的專案給Build起來。
- 由於OGRE只認iOSDependencies這個Folder,所以需要把相關產生的Lib copy到對應的Folder,還有他lib的Folder也只認Debug及Release,所以需要用到Merage Lib的技巧來處理,(也就是將i386及arm架構合在一起),可以使用lipo -create src/ois/Debug-iphoneos/libOIS.a src/ois/Debug-iphonesimulator/libOIS.a -output ./../../iOSDependencies/lib/Debug/libOIS.a來合成檔案,當然對應的head檔也要copy過去,至於路徑關係則要參考Ogre提供的prebuild dependencies的檔案,上述相關的工作,筆者是使用批次檔處理流程做完,mac批次檔處理又是令一則故事,這這裡不討論。
- 在Ogre的Sourcde Folder建Build Folder,並切換到commnad line視窗,在Build Folder下
cmake -D OGRE_BUILD_PLATFORM_APPLE_IOS=1 -G Xcode Ogre的SourceFolder路徑
(比方/Users/akilar/ogre_src_v1-9-0),可能有人會問我為什麼不用IDE介面,因為目前此版本用IDE建不出專案,相關細節可以在Ogre討論區爬文。 - 專案建好以後,依基礎專案設定將所有的Target都設好,之後就可以把SimpleBrowser建立起,算是大功告成了。
- 至於自己的程式參考到其他的Dependency Ogre的ThirdParty Lib,也需要依基礎專案設定將所有的Target都設好編出相關的lib.
- 自己的程式要考到的Other Linker Flags,請參考Ogre專案的SimpleBrowser的設定,當然也要注意Search Paths裡的Head Search Paths及Library Search Paths。
【转】編譯Ogre1.9 IOS Dependencies及Ogre Source步驟及相關注意事項…的更多相关文章
- MAC下反編譯安卓APK
所需工具: 1.apktool http://ibotpeaches.github.io/Apktool/ (配置說明) https://bitbucket.org/iBotPeac ...
- llvm學習(二)————llvm編譯與環境構建
本文由博主原创,转载请注明出处(保留此处和链接): IT人生(http://blog.csdn.net/robinblog/article/details/17339027) 在2011十月份的时候, ...
- C 語言中的編譯指示 (Pragma)
編譯指示 #pragma 是用來告知編譯器某些特殊指示,例如不要輸出錯誤訊息,抑制警告訊息,或者加上記憶體漏洞檢查機制等.這些指示通常不是標準的 C 語言所具備的,而是各家編譯器廠商或開發者所制定的, ...
- 查看LINQ Expression編譯後的SQL語法(转)
在用了LINQ語法之後的一個月,我幾乎把SQL語法全部拋到腦後了,不過 LINQ好用歸好用,但是實際上操作資料庫的還是SQL語法,如果不知道LINQ語法 編譯過後產生怎樣的SQL語法,一不小心效能就會 ...
- make command explaination 編譯命令解釋
Creating .config file make ARCH=arm CROSS_COMPILE=arm-none-eabi- stm32_defconfig 以上命令是 將變數 ARCH=arm, ...
- Centos7編譯安裝LAMP平臺
什麽是LAMP? 拆開看 L 就是Linux系統 A是Apache的縮寫 M.P則是MySQL和PHP的简写. 其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行 ...
- CentOS 7 編譯qBittorrent Web UI安裝指南
前言 以下是安装qBittorrent教学. 适用于CentOS7或更新版本 适用于qBittorrent4.1.5或更新版本 安裝須知 qBittorrent基于libtorrent,所以必须先安装 ...
- windows 安裝 gcc 編譯器 - MinGW
MinGW 介紹 MinGW 全稱 Minimalist GNU For Windows,是個精簡的Windows平台C/C++.ADA及Fortran編譯器,相比Cygwin而言,體積要小很多,使用 ...
- High-level structure of a simple compiler高級結構的簡單編譯器
1.lexical analysis,which analyzes the character string presented to it and divides it up into tokens ...
随机推荐
- iOS静态库.a文件制作和导入使用
iOS静态库.a文件制作: 1.新建Cocoa Touch Static Library工程 新建工程 - 选择iOS-FrameWork&Libary,选择 Cocoa Touch Stat ...
- 转 父表字表统计查询的sql练习
create table father( f_id number(2) primary key, f_name varchar2(10) ); create table s ...
- Learning OpenCV
1. 读取图片 opencv/highgui.h 2. 读取视频 opencv/cv.h opencv/highgui.h 3. 高斯平滑滤波 4. 灰度单通道与边缘检测 5. 摄像头打开 void ...
- day4----装饰器
装饰器本质是函数,装饰其他函数,就是为其他函数添加附加功能. 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 实现装饰器 知识储备 1.函数即“变量 ...
- VIM编辑器的命令
最近看书,说要熟悉一个文本编辑器的用法最好,在mac上找来找去,发现还是VIM最简单,是自带的,哈哈,决定先转下常用的命令,后续如果有时间,可以慢慢试用,慢慢分类,以下: VIM命令大全 保存文本和退 ...
- Windbg符号与源码 《第二篇》
符号文件是一种辅助数据,它包含了对应用程序代码的一些标注信息,这些信息在调试过程中非常有用.如果没有辅助数据,那么能获得的信息就只有应用程序的二进制文件.二进制文件很难调试,因为无法看到代码中的函数名 ...
- ASP.NET MVC学习之Ajax(完结)
一.前言 通过上面的一番学习,大家一定收获不少.但是总归会有一个结束的时候,但是这个结束也意味着新的开始. 如果你是从事ASP.NET开发,并且也使用了第三方控件,那么一定会觉得ASP.NET开发aj ...
- RabbitMQ 连接断开处理-自动恢复
Rabbitmq 官方给的NET consumer示例代码如下,但使用过程,会遇到connection断开的问题,一旦断开,这个代码就会报错,如果你的消费者端是这样的代码的话,就会导致消费者挂掉. u ...
- C++11 并发指南六( <atomic> 类型详解二 std::atomic )
C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍) 一文介绍了 C++11 中最简单的原子类型 std::atomic_flag,但是 std::atomic_flag ...
- [MSSQL]SQL疑难杂症实战记录-巧妙利用PARTITION分组排名递增特性解决合并连续相同数据行
问题提出 先造一些测试数据以说明题目: DECLARE @TestData TABLE(ID INT,Col1 VARCHAR(20),Col2 VARCHAR(20)) INSERT INTO @T ...