OpenSceneGraph之iOS版本编译

    本文主要探讨iOS平台下的编译,官网上以及代码托管库github上提供了编译的步骤,我也亲测了一下,命令行执行了一下发现编译不过,基本的工程都没有生成,有点尴尬,感觉是cmake的版本没有对上,尝试了几次最终放弃了命令行的方式。 OpenSceneGraph提供了cmake 脚本的支持,方便开发者编译源码。一些基本的设置都在CMakeLists.txt里面。

在此我们使用CMake的GUI工具,我使用的版本是3.6.1的。步骤基本如下:

1、首先下载源码(我使用的是tag3.6.0的代码),比如下在/usr/osg文件夹下面。

2、下载编译需要的第三方库,比如下载完成解压到/usr/osg/thirdparty下。

3、打开CMake,将/usr/osg下面的CMakeLists.tx拖到CMake窗口上,设定输出目录,比如/usr/osg/build。

4、需要先点击一下Configure。(此时默认是Mac环境下的配置)

4、设置必要的参数(改成iOS的配置):

IPHONE_SDKVER = 13.1  

IPHONE_VERSION_MIN = 8.0 

DYNAMIC_OPENSCENEGRAPH = OFF  

DYNAMIC_OPENTHREADS = OFF  

如果想使用OpenGLES1

OSG_GL1_AVAILABLE = OFF  

OSG_GL2_AVAILABLE = OFF  

OSG_GL3_AVAILABLE = OFF  

OSG_GLES1_AVAILABLE = ON  

OSG_GLES2_AVAILABLE = OFF  

OSG_GL_LIBRARY_STATIC = OFF   

OSG_GL_DISPLAYLISTS_AVAILABLE = OFF  

OSG_GL_MATRICES_AVAILABLE = ON  

OSG_GL_VERTEX_FUNCS_AVAILABLE = ON  

OSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE = ON  

OSG_GL_FIXED_FUNCTION_AVAILABLE  = ON  

如果想使用OpenGLES2或者OpenGLES3

OSG_GL1_AVAILABLE  = OFF  

OSG_GL2_AVAILABLE = OFF  

OSG_GL3_AVAILABLE = OFF  

OSG_GLES1_AVAILABLE = OFF  

OSG_GLES2_AVAILABLE = ON   OSG_GLES3_AVAILABLE = OFF(使用ES2)

或者

OSG_GLES2_AVAILABLE = OFF   OSG_GLES3_AVAILABLE = ON (使用ES3)

OSG_GL_LIBRARY_STATIC = OFF  

OSG_GL_DISPLAYLISTS_AVAILABLE = OFF  

OSG_GL_MATRICES_AVAILABLE = OFF  

OSG_GL_VERTEX_FUNCS_AVAILABLE = OFF  

OSG_GL_VERTEX_ARRAY_FUNCS_AVAILABLE = OFF  

OSG_GL_FIXED_FUNCTION_AVAILABLE = OFF  

再设置把依赖的第三方库(刚才下载的)按照头文件以及库文件格式都配置好。其实就是把官网提供教程的命令行在GUI里面配置一下。

-DCURL_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/curl-ios-device/include" \
-DCURL_LIBRARY:PATH="$THIRDPARTY_PATH/curl-ios-device/lib/libcurl.a" \
-DFREETYPE_INCLUDE_DIR_freetype2:PATH="$THIRDPARTY_PATH/freetype-ios-universal/include/freetype" \
-DFREETYPE_INCLUDE_DIR_ft2build:PATH="$THIRDPARTY_PATH/freetype-ios-universal/include" \
-DFREETYPE_LIBRARY:PATH="$THIRDPARTY_PATH/freetype-ios-universal/lib/libFreeType_iphone_universal.a" \
-DTIFF_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/tiff-ios-device/include" \
-DTIFF_LIBRARY:PATH="$THIRDPARTY_PATH/tiff-ios-device/lib/libtiff.a" \
-DGDAL_INCLUDE_DIR:PATH="$THIRDPARTY_PATH/gdal-ios-device/include" \
-DGDAL_LIBRARY:PATH="$THIRDPARTY_PATH/gdal-ios-device/lib/libgdal.a"


5、设置必要的参数:点击Configure,没错误就可以Generate了,有错误就按照提示来修改。

一般此时需要设置一下EGL的路径(用到了openGLES),我设置的是

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/usr/include、

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.3.sdk/System/Library/Frameworks/OpenGLES.framework

这个需要根据自己的Xcode环境来设置。

然后把CMAKE_OSX_DEPLOYMENT_TARGET这一行删除,或者把里面的值删除掉,OPENGL_HEADER1需要改成#include <OpenGLES/ES2/gl.h>,搜索macosx,把搜索出来的都删掉。然后在build文件夹下面找到project工程打开,看一下base sdk是否配置正确,然后就可以开心的编译玩耍了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值