这与我之前的问题密切相关,即使用 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
中。这让我相信我做错了什么,但我不知道是什么。 - 我添加
MACOSX_BUNDLE
到add_executable
命令中,以便生成的产品类型将com.apple.product-type.application
代替com.apple.product-type.tool
,这在 iPhone 上显然不存在。
无论如何,该应用程序可以正确编译和链接,但是当我在模拟器中运行它时,我会感到害怕
Failed to launch simulated application: Unknown error.
在 google 和 stackoverflow 上有很多关于此问题的报告实例,但所有解决方案都涉及清理或创建新项目和移动文件;但是我在 CMake 完成它的工作之后编译了一个新的副本,所以这些都不适用。
我在 CMake 邮件列表中找到了这个线程,但它只报告了构建库的成功,然后逐渐消失。