编译为iOS与CMake的(Compiling for iOS with CMake)

2019-08-01 00:48发布

我用CMake的为我的建筑工具编译一个C ++静态库,我想将其链接到我的iOS应用。
我在Xcode中创建一个简单的“空”的应用程序和链接叫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

据我了解,我需要编译我的图书馆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)

这里是我的工具链/ ios.cmake文件:

set(CMAKE_SYSTEM_NAME Darwin)
set(CMAKE_SYSTEM_PROCESSOR arm)

Answer 1:

只要使用这个工具链文件: http://code.google.com/p/ios-cmake/ ,并把它作为

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file

然后,在CMakeLists.txt

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch armv7")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch armv7")


Answer 2:

有位于iOS.cmake的第二个版本:

https://ceres-solver.googlesource.com

注意:您可能会发现iOS.cmake的两个版本将只建项目的86版本。 CMake的现在设置CMAKE_OSX_SYSROOT到您的系统上可用的(最新的)的Mac OS X SDK。 您可以通过修改iOS.cmake的副本总是设置CMAKE_OSX_SYSROOT解决这个问题。 您可以通过注释掉几行你iOS.cmake副本的做到这一点:

# -- Under CMake 3.4.2, CMAKE_OSX_SYSROOT is automatically defined to point to the latest Mac OS X SDK. --
# -- So, the iOS SDK is never found.  Grab the correct CMAKE_OS_SYSROOT and ignore any prior setting.   --

# If user did not specify the SDK root to use, then query xcodebuild for it.
# if (NOT CMAKE_OSX_SYSROOT)
  execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path
    OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
    ERROR_QUIET
    OUTPUT_STRIP_TRAILING_WHITESPACE)
  message (STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}")
  message (STATUS "be sure the previous line points to the correct SDK")
# endif ( )


文章来源: Compiling for iOS with CMake