使用带有cmake的OpenGL ES 2.0生成iOS静态库

时间:2014-09-22 23:49:02

标签: c++ ios opengl-es cmake opengl-es-2.0

我正在为多平台渲染器(现在至少是iOS / Mac)编写构建工具链。该项目有一个核心库(将由每个平台目标使用),它应该被编译为静态库(.a),以便在其他平台依赖项目中使用(如在xcode项目或eclipse中)进一步的android开发)。

此静态库依赖于OpenGL ES 2.0(iOS)或OpenGL for Mac。所以我有以下文件以包含正确的标题:

#ifdef PLATFORM_IOS
#include <OpenGLES/ES2/gl.h>
#include <OpenGLES/ES2/glext.h>
#endif

#ifdef PLATFORM_OSX
#include <OpenGL/gl.h>
#include <GLFW/glfw3.h>
#endif

事实是,它在Mac平台上运行得很好,可以通过cmake正确找到OpenGL头文件,但对于iOS,它找不到OpenGLES;即使使用我编写的FindOpenGLES.cmake模块,我也无法找到这些标题,这似乎是合乎逻辑的,因为我甚至没有在/ usr / include中找到它们。

1 个答案:

答案 0 :(得分:0)

您可能需要设置CMAKE_SYSTEM_FRAMEWORK_PATH,以下内容来自我的iOS工具链文件

  set (IOS_SDK_ROOT "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk")

  # Set the sysroot default to the most recent SDK
  set (CMAKE_OSX_SYSROOT ${IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")

  # set the architecture for iOS - this env var sets armv6,armv7 and appears to be XCode's standard. The other found is ARCHS_UNIVERSAL_IPHONE_OS but that is armv7 only
  set (CMAKE_OSX_ARCHITECTURES "${IOS_ARCH}" CACHE string "Build architecture for iOS")

  # set up the default search directories for frameworks
  set (CMAKE_SYSTEM_FRAMEWORK_PATH ${IOS_SDK_ROOT}/Developer/Library/Frameworks)