我正在为多平台渲染器(现在至少是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中找到它们。
答案 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)