2012-09-27 13 views
10

के साथ आईओएस के लिए संकलन मैंने सीमेक का उपयोग करके अपने निर्माण उपकरण के रूप में सी ++ स्थिर पुस्तकालय संकलित किया है और मैं इसे अपने आईओएस ऐप से लिंक करना चाहता हूं।
मैंने एक्सकोड में एक सरल 'खाली' एप्लिकेशन बनाया और इसके लिए 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 

मैं यह समझ के रूप में, मैं एआरएम प्रोसेसर के लिए मेरे पुस्तकालय संकलित करने के लिए की जरूरत है। समस्या यह है कि मुझे नहीं पता कि कैसे।
मुझे लगता है कि सीएमके में वास्तव में अच्छे ट्यूटोरियल की कमी है।
वैसे भी, मेरे सीएमके स्क्रिप्ट नीचे संलग्न हैं।

किसी भी मदद की सराहना की जाएगी।
धन्यवाद, ताल।

यहाँ मेरी मुख्य CMake स्क्रिप्ट है:

set(CMAKE_SYSTEM_NAME Darwin) 
set(CMAKE_SYSTEM_PROCESSOR arm) 

उत्तर

9

बस इस toolchain फ़ाइल का उपयोग: http://code.google.com/p/ios-cmake/ और

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file 
रूप में इसका इस्तेमाल

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) 

यहाँ मेरी toolchains/ios.cmake फ़ाइल है

फिर, CMakeLists.txt में:

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

नहीं cmake 2.8.11 त्रुटियों पर काम करता है: CMake त्रुटि: cmake मॉड्यूल फ़ाइल नहीं मिली:/उपयोगकर्ताओं/leanidchaika/नौकरी/आप लाइनों iOS.cmake की अपनी प्रतिलिपि की एक जोड़ी बाहर टिप्पणी करके ऐसा कर सकते हैं lge/build/CMakeFiles/2.8.11.2/CMakeCCompiler.cmake सीएमके त्रुटि: cmake मॉड्यूल फ़ाइल नहीं मिल सका: /Users/leanidchaika/job/lge/build/CMakeFiles/2.8.11.2/CMakeCXXCompiler.cmake –

+1

यहां कुछ और हालिया है लिंक किए गए टूलचेन का कांटा: https://github.com/cristeab/ios-cmake मैं पुराने संस्करण के साथ कुछ बग्स में भाग गया जो इस में तय किए गए हैं –

2

iOS.cmake का एक दूसरा संस्करण पर स्थित है:

https://ceres-solver.googlesource.com

ध्यान दें: आप पा सकते हैं कि iOS.cmake के दोनों संस्करणों केवल अपनी परियोजना के 86 संस्करणों का निर्माण होगा। सीएमके अब आपके सिस्टम पर उपलब्ध नवीनतम (मैक ओएस एक्स एसडीके) में CMAKE_OSX_SYSROOT सेट करता है। आप 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 ()