美文网首页
Building OSG for iOS

Building OSG for iOS

作者: 止水_0f49 | 来源:发表于2017-10-03 00:43 被阅读0次

    时间

    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 , 点击 运行按钮即可。

    相关文章

      网友评论

          本文标题:Building OSG for iOS

          本文链接:https://www.haomeiwen.com/subject/nnlxyxtx.html