使用CMake编译iOS版

Tal*_*ion 13 c++ arm compilation 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)

dre*_*zor 12

只需使用此工具链文件:http://code.google.com/p/ios-cmake/并将其用作

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file
Run Code Online (Sandbox Code Playgroud)

然后,在CMakeLists.txt:

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch armv7")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch armv7")
Run Code Online (Sandbox Code Playgroud)

  • 这是链接工具链的最新分支:https://github.com/cristeab/ios-cmake 我遇到了一些旧版本的错误,这些错误已在这个版本中得到修复 (2认同)

Vla*_*lad 10

通过遵循cmake-toolchains文档,我喜欢以下内容:

cmake -G Xcode -B build \
    -DCMAKE_SYSTEM_NAME=iOS \
    -DCMAKE_Swift_COMPILER_FORCED=true \
    -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0
Run Code Online (Sandbox Code Playgroud)

注意:CMAKE_OSX_DEPLOYMENT_TARGET=11.0当针对 iOS 时,该分配不是错误的。