2012-09-27 14 views
10

He compilado una biblioteca estática de C++ usando CMake como herramienta de construcción y quiero vincularla a mi aplicación de iOS.
Creé una aplicación simple 'Vacía' en Xcode y vinculé mi biblioteca llamada libengine.a a ella.
traté de compilar mi proyecto de iOS y el enlazador me dio esta advertencia:
Compilación para iOS con CMake

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 

Como lo entiendo, necesito para compilar mi biblioteca para procesadores ARM. El problema es que no sé cómo.
Creo que a CMake le faltan buenos tutoriales.
De todos modos, mis scripts CMake se adjuntan a continuación.

Cualquier ayuda sería muy apreciada.
Gracias, Tal.

Aquí está mi script principal 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) 

Aquí es mi cadenas de herramientas/archivo ios.cmake:

set(CMAKE_SYSTEM_NAME Darwin) 
set(CMAKE_SYSTEM_PROCESSOR arm) 

Respuesta

9

sólo tiene que utilizar este archivo cadena de herramientas: http://code.google.com/p/ios-cmake/ y utilizarlo como

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file 

Luego, en CMakeLists.txt:

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

no funciona en cmake 2.8.11 errores: CMake Error: No se pudo encontrar el archivo de módulo cmake:/Users/leanidchaika/trabajo/lge/build/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake CMake Error: No se pudo encontrar el archivo del módulo cmake: /Users/leanidchaika/job/lge/build/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake –

+1

Aquí hay un poco más reciente tenedor de la cadena de herramientas vinculada: https://github.com/cristeab/ios-cmake Me encontré con un par de errores con la versión anterior que se han solucionado en este –

2

Hay una segunda versión de iOS.cmake ubicada en:

https://ceres-solver.googlesource.com

Nota: Es posible que ambas versiones de iOS.cmake sólo se construirán 86 versiones de su proyecto. CMake ahora establece CMAKE_OSX_SYSROOT en el (último) Mac OS X SDK disponible en su sistema. Puedes solucionar esto modificando tu copia de iOS.c Haz clic para configurar siempre CMAKE_OSX_SYSROOT. Usted puede hacer esto al comentar un par de líneas de su copia de 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 () 
Cuestiones relacionadas