时间
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
- Version 3.0.2
- 安装包
链接:http://pan.baidu.com/s/1o7GZJiq 密码:0c63 - 目录
/Applications/CMake.app/Contents/bin
此处有大坑,如果使用最新版 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 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,
- copy 对应文件,修改 owner:
sudo chown -R cateye:staff ./*
- 删除 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
- 打开 xcode工程,链接 pad, Deployment 中选择,iOS Deployment Target -> iOS 9.3. 选择 ALL_BUILD , 点击 运行按钮即可。