2012-09-27 17 views
10

Ich habe eine statische C++ Bibliothek kompiliert, indem ich CMake als mein Bauwerkzeug benutze und ich möchte es mit meiner iOS App verknüpfen.
Ich habe eine einfache 'Leere' Anwendung in Xcode erstellt und meine Bibliothek namens libengine.a damit verbunden.
Ich habe versucht, mein iOS-Projekt und der Linker gab mir diese Warnung zu kompilieren:
Kompilieren für iOS mit 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 

Wie ich es verstehe, ich brauche meine Bibliothek für ARM-Prozessoren zu kompilieren. Das Problem ist, ich weiß nicht wie.
Ich denke, CMake fehlt wirklich gute Tutorials.
Wie auch immer, meine CMake-Skripte sind unten angehängt.

Jede Hilfe würde sehr geschätzt werden.
Danke, Tal. Hier

ist mein Haupt CMake Skript:

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) 

Hier ist meine Werkzeugketten/ios.cmake Datei:

set(CMAKE_SYSTEM_NAME Darwin) 
set(CMAKE_SYSTEM_PROCESSOR arm) 

Antwort

9

einfach diese Toolchain Datei: http://code.google.com/p/ios-cmake/ und verwenden Sie es als

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file 

Dann in CMakeLists.txt:

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

funktioniert nicht auf Cmake 2.8.11 Fehler: CMake Fehler: Konnte nicht cmake Moduldatei finden:/Users/leanidchaika/job/lge/build/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake CMake Fehler: CMake-Modul-Datei nicht gefunden: /Users/leanidchaika/job/lge/build/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake –

+1

Hier ist ein bisschen jünger Gabel der verbundenen Toolchain: https://github.com/cristeab/ios-cmake Ich lief ein paar Bugs mit der alten Version, die in diesem Fall behoben wurden –

2

Es gibt eine zweite Version von iOS.cmake sich unter:

https://ceres-solver.googlesource.com

Hinweis: Sie können feststellen, dass beide Versionen von iOS.cmake nur x86-Versionen Ihres Projekts bauen. CMake setzt nun CMAKE_OSX_SYSROOT auf das (neueste) Mac OS X SDK, das auf Ihrem System verfügbar ist. Sie können dies beheben, indem Sie Ihre Kopie von iOS.cmake so ändern, dass immer CMAKE_OSX_SYSROOT gesetzt wird. Sie können dies tun, indem Sie ein paar Zeilen Ihre Kopie von iOS.cmake Kommentierung aus:

# -- 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 () 
Verwandte Themen