2012-09-27 2 views
10

J'ai compilé une bibliothèque statique C++ en utilisant CMake comme outil de construction et je veux l'associer à mon application iOS.
J'ai créé une simple application 'Empty' dans Xcode et y ai lié ma bibliothèque appelée libengine.a.
J'ai essayé de compiler mon projet iOS et l'éditeur de liens m'a donné cet avertissement:
Compilation pour iOS avec 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 

Si je comprends bien, je dois compiler ma bibliothèque pour les processeurs ARM. Le problème est que je ne sais pas comment.
Je pense que CMake manque vraiment de bons tutoriels.
De toute façon, mes scripts CMake sont attachés ci-dessous.

Toute aide serait grandement appréciée.
Merci, Tal.

Voici mon 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) 

Voici mon toolchains/fichier ios.cmake:

set(CMAKE_SYSTEM_NAME Darwin) 
set(CMAKE_SYSTEM_PROCESSOR arm) 

Répondre

9

Il suffit d'utiliser ce fichier toolchain: http://code.google.com/p/ios-cmake/ et l'utiliser comme

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file 

Puis, dans CMakeLists.txt:

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

fonctionne pas sur les erreurs CMake 2.8.11: CMake Erreur: Impossible de trouver le fichier de module CMake:/Users/leanidchaika/emploi/lge/build/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake CMake Erreur: Impossible de trouver le fichier du module cmake: /Users/leanidchaika/job/lge/build/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake –

+1

Voici un peu plus récent fourche de la chaîne d'outils liés: https://github.com/cristeab/ios-cmake J'ai rencontré quelques bogues avec l'ancienne version qui ont été corrigés dans celui-ci –

2

Il y a une deuxième version de iOS.cmake situé à:

https://ceres-solver.googlesource.com

Note: Vous pouvez constater que seulement les deux versions de iOS.cmake construire des versions x86 de votre projet. CMake définit maintenant CMAKE_OSX_SYSROOT sur le (dernier) SDK Mac OS X disponible sur votre système. Vous pouvez résoudre ce problème en modifiant votre copie de iOS.cmake pour toujours définir CMAKE_OSX_SYSROOT. Vous pouvez le faire en commentant quelques lignes de votre copie 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 () 
Questions connexes