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

标签 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 模块,我也找不到这些 header ,这似乎合乎逻辑,因为我什至没有在/usr/include 中找到它们。

最佳答案

您可能需要设置 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)

关于c++ - 使用带有 cmake 的 OpenGL ES 2.0 生成 iOS 静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984767/

相关文章:

c++ - Armadillo ,如何增长 vector 并获得他的大小?

c++ - 什么时候调用 move ctor?

ios - UILabel 缩小/扩展框架以适应自动布局中的文本?

ios - AVFoundation 在 ios5 中用 Alpha 合成叠加两个视频剪辑?

C++ 结构无效使用非静态数据成员

c++ - 如何知道QTreeView项装饰被点击

iphone - 架构 armv7 的 undefined symbol : "_SCNetworkReachabilityCreateWithAddress"

ios - Swift 输入输出参数 - 用例

java - 从 Open GL 保存图像

opengl-es - Qt Enterprise for IMX6 不使用硬件加速?