Building OSG for iOS

时间

2017年10月2日

参考

osgEarth官方文档:
Building osgEarth (and OSG) for iOS

© Copyright 2013, Pelican Mapping. Revision 7b30f9fd

环境与关键工具

  • 系统
    macOS Sierra (10.12.5)

  • Xcode

    • Version 8.3.3 (8E3004b)
    • CXX Compiler: AppleClang 8.1.0.8020042
  • CMake

此处有大坑,如果使用最新版 cmake ,3.9.3, 运行cmake报错 The C compiler "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" is not able to compile a simple test program.

依赖库 armv7 架构

pre-built packages
Prebuilt dependencies courtesy of Thomas Hogarth can be downloaded here: https://s3.amazonaws.com/pelican-downloads/ios-3rdParty.zip

步骤

  1. 代码
    1.1 Download OSG trunk
cd /Users/wangmiao/projects/osgearth-build/osg-ios/
git clone https://github.com/openscenegraph/OpenSceneGraph.git

1.2 修改CMakeList.tx

Edit CMakeList.txt to point to your version of iOS SDK:

Check /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
Open CMakeList.txt and change to your SDK version: (SET (IPHONE_SDKVER "5.1" CACHE STRING "IOS SDK-Version")

CMakeList全部改动:

--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -61,12 +61,15 @@ IF(APPLE AND NOT ANDROID)
   IF(OSG_BUILD_PLATFORM_IPHONE OR OSG_BUILD_PLATFORM_IPHONE_SIMULATOR)
     SET(OSG_WINDOWING_SYSTEM "IOS" CACHE STRING "Windowing system type for graphics window creation, options only IOS.")

+    #added by wangmiao, 2017-10-01
+    SET (IPHONE_VERSION_MIN "7.0" CACHE STRING "IOS minimum os version, use 7.0 or greater to get 64bit support")
+
     #set iphone arch and flags taken from http://sites.google.com/site/michaelsafyan/coding/resources/how-to-guides/cross-compile-for-the-iphone/how-to-cross-compile-for-the-iphone-using-cmake
     IF(OSG_BUILD_PLATFORM_IPHONE)
       IF(${IPHONE_VERSION_MIN} LESS "7.0")
-       SET(CMAKE_OSX_ARCHITECTURES "armv6;armv7" CACHE STRING "Build architectures for iOS" FORCE)
+           SET(CMAKE_OSX_ARCHITECTURES "armv6;armv7" CACHE STRING "Build architectures for iOS" FORCE)
       ELSE()
-       SET(CMAKE_OSX_ARCHITECTURES "armv7;armv7s;arm64" CACHE STRING "Build architectures for iOS" FORCE)
+           SET(CMAKE_OSX_ARCHITECTURES "armv7;armv7s;arm64" CACHE STRING "Build architectures for iOS" FORCE)
       ENDIF()

     ELSE()
@@ -239,7 +242,7 @@ IF(APPLE)
     IF(OSG_BUILD_PLATFORM_IPHONE OR OSG_BUILD_PLATFORM_IPHONE_SIMULATOR)

         #you need to manually set the default sdk version here
-        SET (IPHONE_SDKVER "10.2" CACHE STRING "IOS SDK-Version")
+        SET (IPHONE_SDKVER "10.3" CACHE STRING "IOS SDK-Version")
         SET (IPHONE_VERSION_MIN "7.0" CACHE STRING "IOS minimum os version, use 7.0 or greater to get 64bit support")
  • Run CMake to generate OSG XCode Project
    Use below command line to generate static GLES2 build for iOS devices, change 3rdparty paths to reflect your 3rdparty path
 /Applications/CMake.app/Contents/bin/cmake ./ -G Xcode -DOSG_BUILD_PLATFORM_IPHONE:BOOL=ON \
-DBUILD_OSG_APPLICATIONS:BOOL=OFF \
-DOSG_WINDOWING_SYSTEM:STRING=IOS \
-DOSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX="imageio" \
-DOSG_GL1_AVAILABLE:BOOL=OFF \
-DOSG_GL2_AVAILABLE:BOOL=OFF \
-DOSG_GLES1_AVAILABLE:BOOL=OFF \
-DOSG_GLES2_AVAILABLE:BOOL=ON \
-DOSG_GL_DISPLAYLISTS_AVAILABLE:BOOL=OFF \
-DOSG_GL_FIXED_FUNCTION_AVAILABLE:BOOL=OFF \
-DOSG_GL_LIBRARY_STATIC:BOOL=OFF \
-DOSG_GL_MATRICES_AVAILABLE:BOOL=OFF \
-DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE:BOOL=OFF \
-DOSG_GL_VERTEX_FUNCS_AVAILABLE:BOOL=OFF \
-DCURL_INCLUDE_DIR:PATH="/Users/wangmiao/release/osg/3rdParty/curl-ios-cateye/include/" \
-DCURL_LIBRARY:PATH="/Users/wangmiao/release/osg/3rdParty/curl-ios-cateye/lib/libcurl.a" \
-DFREETYPE_INCLUDE_DIR_freetype2:PATH="/Users/wangmiao/release/osg/3rdParty/freetype-ios-universal/include/freetype" \
-DFREETYPE_INCLUDE_DIR_ft2build:PATH="/Users/wangmiao/release/osg/3rdParty/freetype-ios-universal/include" \
-DFREETYPE_LIBRARY:PATH="/Users/wangmiao/release/osg/3rdParty/freetype-ios-universal/lib/libFreeType_iphone_universal.a" \
-DTIFF_INCLUDE_DIR:PATH="/Users/wangmiao/release/osg/3rdParty/tiff-ios-device/include" \
-DTIFF_LIBRARY:PATH="/Users/wangmiao/release/osg/3rdParty/tiff-ios-device/lib/libtiff.a" \
-DGDAL_INCLUDE_DIR:PATH="/Users/wangmiao/release/osg/3rdParty/gdal-ios-device/include" \
-DGDAL_LIBRARY:PATH="/Users/wangmiao/release/osg/3rdParty/gdal-ios-device/lib/libgdal.a" \
-DDYNAMIC_OPENSCENEGRAPH:BOOL=OFF \
-DDYNAMIC_OPENTHREADS:BOOL=OFF

成果发布

换台电脑

1.创建cateye user,

  1. copy 对应文件,修改 owner:

sudo chown -R cateye:staff ./*

  1. 删除 CMakeCache.txt 文件,运行

/Applications/CMake.app/Contents/bin/cmake ./ -G Xcode -DOSG_BUILD_PLATFORM_IPHONE:BOOL=ON
-DBUILD_OSG_APPLICATIONS:BOOL=OFF
-DOSG_WINDOWING_SYSTEM:STRING=IOS
-DOSG_DEFAULT_IMAGE_PLUGIN_FOR_OSX="imageio"
-DOSG_CPP_EXCEPTIONS_AVAILABLE=ON
-DOSG_GL1_AVAILABLE:BOOL=OFF
-DOSG_GL2_AVAILABLE:BOOL=OFF
-DOSG_GLES1_AVAILABLE:BOOL=OFF
-DOSG_GLES2_AVAILABLE:BOOL=ON
-DOSG_GL_DISPLAYLISTS_AVAILABLE:BOOL=OFF
-DOSG_GL_FIXED_FUNCTION_AVAILABLE:BOOL=OFF
-DOSG_GL_LIBRARY_STATIC:BOOL=OFF
-DOSG_GL_MATRICES_AVAILABLE:BOOL=OFF
-DOSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE:BOOL=OFF
-DOSG_GL_VERTEX_FUNCS_AVAILABLE:BOOL=OFF
-DCURL_INCLUDE_DIR:PATH="/Users/cateye/release/osg/3rdParty/curl-ios-cateye/include/"
-DCURL_LIBRARY:PATH="/Users/cateye/release/osg/3rdParty/curl-ios-cateye/lib/libcurl.a"
-DFREETYPE_INCLUDE_DIR_freetype2:PATH="/Users/cateye/release/osg/3rdParty/freetype-ios-universal/include/freetype"
-DFREETYPE_INCLUDE_DIR_ft2build:PATH="/Users/cateye/release/osg/3rdParty/freetype-ios-universal/include"
-DFREETYPE_LIBRARY:PATH="/Users/cateye/release/osg/3rdParty/freetype-ios-universal/lib/libFreeType_iphone_universal.a"
-DTIFF_INCLUDE_DIR:PATH="/Users/cateye/release/osg/3rdParty/tiff-ios-device/include"
-DTIFF_LIBRARY:PATH="/Users/cateye/release/osg/3rdParty/tiff-ios-device/lib/libtiff.a"
-DGDAL_INCLUDE_DIR:PATH="/Users/cateye/release/osg/3rdParty/gdal-ios-device/include"
-DGDAL_LIBRARY:PATH="/Users/cateye/release/osg/3rdParty/gdal-ios-device/lib/libgdal.a"
-DDYNAMIC_OPENSCENEGRAPH:BOOL=OFF
-DDYNAMIC_OPENTHREADS:BOOL=OFF

  1. 打开 xcode工程,链接 pad, Deployment 中选择,iOS Deployment Target -> iOS 9.3. 选择 ALL_BUILD , 点击 运行按钮即可。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容