2011-02-15 16 views
55

¿Cómo especifico en xcodebuild (la herramienta de línea de comandos) si deseo construir para el simulador o dispositivo?xcodebuild: simulador o dispositivo?

+12

En realidad, el ejecutable es totalmente diferente, cuando compila para el sim que está compilando para x86 y en el dispositivo para ARM. –

Respuesta

122

Un XCode construir desde la línea de comandos se parece a:

xcodebuild -configuration ${BUILD_TYPE} -target ${TARGET_NAME} -arch ${CPU_ARCHITECTURE} -sdk ${SIMULATOR_OR_IOS_SDK} 

BUILD_TYPE es algo así como "Release" o "depuración" (esos son los valores por defecto, si se ha añadido otros para el proyecto)

TARGET_NAME es el nombre del objetivo que está construyendo (por defecto el mismo nombre que su proyecto)

CPU_ARCHITECTURE es la CPU que está construyendo para, uno de:

i386, ARMv6, ARMv7

Uso i386 para el simulador se basa, y utilizar cualquiera ARMv6 o ARMv7 para el dispositivo de construccion - en cuenta que algunos otros dispositivos no pueden ejecutar código ARMv7, por lo general en la construcción de bibliotecas Es una buena idea para construir todas estas arquitecturas y luego pegarlas usando lipo.

SIMULATOR_OR_IOS_SDK es lo que está buscando, es iphoneos o iphonesimulator. Esos valores utilizan la última versión del SDK que soporta el XCode instalado, puede obtener una lista de soportados de SDK con:

xcodebuild -showsdks 

que devuelve una lista como:

Mac OS X SDKs: 
    Current Mac OS     -sdk 
    Mac OS X 10.6     -sdk macosx10.6 

iOS SDKs: 
    iOS 4.2       -sdk iphoneos4.2 

iOS Simulator SDKs: 
    Simulator - iOS 3.2    -sdk iphonesimulator3.2 
    Simulator - iOS 4.0    -sdk iphonesimulator4.0 
    Simulator - iOS 4.1    -sdk iphonesimulator4.1 
    Simulator - iOS 4.2    -sdk iphonesimulator4.2 

xcodebuild tiene más banderas que eso, pero esos son los que comúnmente usaría después de usar XCode para configurar las propiedades de compilación. No es necesario que los use todos, pero probablemente sea una buena idea tener claro lo que está creando; de lo contrario, creo que se utilizaron sus últimas configuraciones.

+0

Sé '-configuration' y' -target'. Me acabo de olvidar que el SDK estableció el hardware vs. el simulador. ¡Gracias! –

+4

Es posible que también desee mencionar '-sdk iphoneos' para obtener la última versión. –

+0

Gracias, sabía que XCode tenía una configuración de SDK de "última versión", pero no pude entender de qué se trataba. Supongo que "iphonesimulator" es también la última versión del simulador de iPhone. –

1

encuentro la bandera -xcconfig bastante útil. esta opción le permite especificar una ruta a un xcconfig (archivo de configuración de compilación). dentro de un xcconfig, puede #include otros archivos xcconfig.

Cuestiones relacionadas