我用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)
只要使用这个工具链文件: 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")
有位于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 ( )