这与我之前的问题密切相关,那个问题是关于如何使用CMake在iPhone上构建静态库。通过设置CMAKE_OSX_SYSROOT
,我已经成功地实现了该目标。
然而,这并不适用于构建应用程序。我的CMakeLists.txt
看起来像:
project(TEST)
set(CMAKE_OSX_SYSROOT iphoneos2.2.1)
set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)")
set(CMAKE_EXE_LINKER_FLAGS
"-framework Foundation -framework OpenGLES -framework AudioToolbox -framework CoreGraphics -framework QuartzCore -framework UIKit -framework OpenAL"
)
set(SRC --my files--)
add_executable(iphone-test MACOSX_BUNDLE ${SRC})
几点说明:
- 我明确给出
-framework
链接选项,因为find_library
未能找到所有的框架(它发现了大部分,但未找到OpenGLES
)。我不明白为什么,因为它们都在同一个文件夹${SDK}/System/Library/Frameworks
中。这让我相信我做错了什么,但我不知道是什么。 - 我在
add_executable
命令中添加了MACOSX_BUNDLE
,以便生成的产品类型为com.apple.product-type.application
而不是com.apple.product -type.tool
,后者显然在iPhone上不存在。
无论如何,该应用程序编译和链接正确,但当我在模拟器中运行它时,会遇到可怕的...
Failed to launch simulated application: Unknown error.
在谷歌和stackoverflow上有很多关于这个问题的报告,但所有的解决方案都涉及清理或创建新项目并移动文件;但我在CMake完成工作后编译一个全新的副本,所以这些都不适用。
我在CMake邮件列表中发现了这个主题,但它只报告了构建库的成功情况,然后就停滞了。