2009-04-27 13 views
10

Próbuję użyć CMake do wygenerowania konfiguracji Xcode dla iPhone'a poprzez ręczne ustawienie pewnych atrybutów. (Czy jest to jeszcze właściwy sposób, aby przejść na ten temat) Mój plik CUpewnij wygląda następująco:Jak skonfigurować CMake do budowy biblioteki dla iPhone'a

project(MYLIB) 
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) 
set(CMAKE_CONFIGURATION_TYPES Debug Release Debug-iPhone) 
set(FILES list of my files...) 

add_library(mylib FILES) 

set(XCODE_ATTRIBUTE_SDKROOT iphoneos2.2.1) 
# more attributes later, I'm just trying to get one to work first 

Przede wszystkim, to nie wydaje się do pracy - w wygenerowanym projekcie Xcode (Biegnę cmake . -G Xcode) , SDKROOT wciąż nie działa, a więc mówi "Obecny Mac OS".

Po drugie, zakładając, że jest to właściwy sposób, jak ustawić atrybut tylko dla konfiguracji Debug-iPhone?

Odpowiedz

12

O ile wiem, istnieją dwa sposoby. Najprawdopodobniej jesteś prawie na miejscu, użyj CMAKE_OSX_SYSROOT, aby ustawić SDKROOT XCode. Istnieje również zmienna CMAKE_OSX_ARCHITECTURES, która odwzorowuje ARCHS w XCode. Możliwe jest użycie . Nie użyłem go do iPhone'a, ale zrobiłem to dla innych procesorów ARM. Trzeba skonfigurować plik toolchain że będzie wyglądał tak:

set(CMAKE_SYSTEM_NAME Generic) 
set(CMAKE_SYSTEM_VERSION 1) 
set(CMAKE_SYSTEM_PROCESSOR arm-elf) 
set(CMAKE_C_COMPILER /path/to/complier/bin/arm-elf-gcc) 
set(CMAKE_FIND_ROOT_PATH /path/to/compiler) 
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 

A potem po uruchomieniu cmake, ustawić zmienną CMAKE_TOOLCHAIN_FILE nazwy pliku toolchain. Lub jeśli kompilujesz tylko jedną architekturę, możesz zakodować wartość w pliku CMakeLists.txt. Ale wyobrażam sobie, że musiałbyś przejść przez kompilację dla symulatora iPhone'a i samego iPhone'a, prawda? Więc można uruchomić jeden z nich, prawdopodobnie o kilka wariantów budowy:

cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-sim.cmake . 
cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-real.cmake . 

Jeżeli Sim/rzeczywiste pliki definiują środowisko dla symulatora lub Real iphone narzędzi kompilatora.

Niektóre inne linki, które mogą pomóc, to this bug report i this mailing list conversation.

+0

Jestem obecnie robi swój pierwszy sugestię; Próbowałem cross-kompilacji i nie mogłem go nakierować na odpowiednią architekturę (mimo że używał właściwego kompilatora - to było dziwaczne). Zastanawiam się - jak znaleźć zmienne takie jak CMAKE_OSX_SYSROOT? Nie wydaje się nawet na liście, nie wspominając już o jej udokumentowaniu. –

+1

Jak osobiście to robię? W tym przypadku zasubskrybowałem listę mailingową cmake i pamiętam, że widziałem tam dyskusję na temat iPhone'a. Niektóre z tych zmiennych pojawiają się także w pamięci podręcznej, więc uruchomienie ccmake lub gui w trybie zaawansowanym może dać ci kilka wskazówek. W przeciwnym razie, grep -r w kodzie źródłowym cmake ... – richq

2

Ta informacja może być również użyteczne:

Projekt ten zapewnia prosty plik toolchain iOS, które mogą być używane z CMake zbudować bibliotek i aplikacji konfiguracji. Dołączono kilka przykładowych projektów.

http://code.google.com/p/ios-cmake/

Powiązane problemy