Building OSG for iOS

2017-10-03  本文已影响0人  止水_0f49

时间

2017年10月2日

参考

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

© Copyright 2013, Pelican Mapping. Revision 7b30f9fd

环境与关键工具

此处有大坑,如果使用最新版 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")
 /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 , 点击 运行按钮即可。
上一篇下一篇

猜你喜欢

热点阅读