2012-09-27 7 views
10

Ho compilato una libreria statica C++ utilizzando CMake come strumento di creazione e desidero collegarlo alla mia app iOS.
Ho creato una semplice applicazione 'Vuota' in Xcode e ho collegato la mia libreria chiamata libengine.a ad essa.
ho provato a compilare il mio progetto iOS e il linker mi ha dato questo avvertimento:
Compilazione per 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 

A quanto ho capito, ho bisogno di compilare la mia libreria per i processori ARM. Il problema è che non so come.
Penso che CMake manchi davvero di buoni tutorial.
In ogni caso, i miei script CMake sono allegati di seguito.

Qualsiasi aiuto sarebbe molto apprezzato.
Grazie, Tal.

Qui è la mia principale sceneggiatura 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) 

Qui è la mia toolchain/lima ios.cmake:

set(CMAKE_SYSTEM_NAME Darwin) 
set(CMAKE_SYSTEM_PROCESSOR arm) 

risposta

9

Basta utilizzare questo file toolchain: http://code.google.com/p/ios-cmake/ e usarlo come

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file 

Quindi, in CMakeLists.txt:

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

non funziona su 2.8.11 cmake errori: CMake Errore: Impossibile trovare il file modulo cmake:/Users/leanidchaika/lavoro/lge/build/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake Errore CMake: impossibile trovare il file del modulo cmake: /Users/leanidchaika/job/lge/build/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake –

+1

Ecco un po 'più recente fork della toolchain collegata: https://github.com/cristeab/ios-cmake Mi sono imbattuto in un paio di bug con la vecchia versione che è stata risolta in questo –

2

V'è una seconda versione di iOS.cmake situato a:

https://ceres-solver.googlesource.com

Nota: È possibile che entrambe le versioni di iOS.cmake potranno costruire solo versioni x86 di progetto. CMake ora imposta CMAKE_OSX_SYSROOT sul (più recente) Mac OS X SDK disponibile sul tuo sistema. Puoi risolvere questo problema modificando la tua copia di iOS.cmake per impostare sempre CMAKE_OSX_SYSROOT. È possibile farlo commentando un paio di righe la propria copia di 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 ()