相关疑难解决方法(0)

如何设置CMake为iPhone构建应用程序

这与我之前的问题密切相关,该问题是关于使用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_BUNDLEadd_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邮件列表上找到了这个帖子,但它只报告了构建库的成功,然后逐渐消失.

iphone xcode cmake

25
推荐指数
2
解决办法
2万
查看次数

使用CMake编译iOS版

我使用CMake作为构建工具编译了一个C++静态库,我想将它链接到我的iOS应用程序.
我在Xcode中创建了一个简单的"Empty"应用程序,并将我的库libengine.a链接到它.
我试图编译我的iOS项目,链接器给了我这个警告:

ignoring file /Users/.../build/engine/libengine.a, 
file was built for archive which is not the architecture being linked (i386):
/Users/.../build/engine/libengine.a
Run Code Online (Sandbox Code Playgroud)

据我所知,我需要为ARM处理器编译我的库.问题是我不知道怎么做.
我认为CMake真的缺乏很好的教程.
无论如何,我的CMake脚本附在下面.

任何帮助将不胜感激.
谢谢,塔尔.

这是我的主要CMake脚本:

cmake_minimum_required(VERSION 2.8)

project(movie-night)

if (DEFINED PLATFORM)
    include(toolchains/ios.cmake)
endif()

add_definitions(-Wall)

set(DEBUG)

if (DEFINED DEBUG)
    add_definitions(-g)
endif()

if (DEFINED RELEASE)
    add_definitions(-O3)
endif()

add_subdirectory(engine)
add_subdirectory(ui)

add_subdirectory(test)
Run Code Online (Sandbox Code Playgroud)

这是我的toolchains/ios.cmake文件:

set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_SYSTEM_PROCESSOR arm)
Run Code Online (Sandbox Code Playgroud)

c++ arm compilation cmake ios

13
推荐指数
2
解决办法
2万
查看次数

标签 统计

cmake ×2

arm ×1

c++ ×1

compilation ×1

ios ×1

iphone ×1

xcode ×1