这与我之前的问题密切相关,该问题是关于使用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})
Run Code Online (Sandbox Code Playgroud)
几点说明:
-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.
Run Code Online (Sandbox Code Playgroud)
google和stackoverflow上有很多报告此问题的实例,但所有解决方案都涉及清理或创建新项目和移动文件; 但是我在CMake完成它的工作后正在编译一份新的副本,所以这些都不适用.
我在CMake邮件列表上找到了这个帖子,但它只报告了构建库的成功,然后逐渐消失.