2010-05-04 21 views
9

Me han encargado que trabaje en un proyecto que tiene algunos atributos confusos.Banderas del compilador específicas para archivos específicos en Xcode

El proyecto es de la naturaleza que no se compilará para el simulador de iPhone y el dispositivo de iPhone con la misma configuración de compilación. Creo que tiene que ver con la necesidad de compilarse específicamente para x86 o arm6/7 dependiendo de la plataforma de destino.

Por lo tanto, la configuración de compilación del proyecto, cuando se ve en la vista Configuración de compilación de Xcode, no me permite establecer indicadores de compilación específicos para archivos específicos. Sin embargo, el desarrollador anterior que trabajó en este proyecto ha declarado alguna manera la línea:

CE7FEB5710F09234004DE356 /* MyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CE7FEB5510F09234004DE356 /* MyFile.m */; settings = {COMPILER_FLAGS = "-fasm-blocks -marm -mfpu=neon"; }; }; 

¿Hay alguna manera de hacer esto sin necesidad de editar el archivo de proyecto con la mano? Sé que editar el archivo del proyecto puede ocasionar que se rompa por completo, así que prefiero no hacerlo, ya que obviamente no sé tanto como el desarrollador anterior.

Así que para aclarar, la pregunta es:

La generación falla cuando se compila para simulador menos que se quita la bandera -fasm-blocks. La compilación falla al compilar para el dispositivo a menos que agregue el indicador -fasm-blocks. ¿Hay alguna manera de establecer este indicador por archivo sin editar el archivo del proyecto a mano?

+0

Puede usar '#if! TARGET_IPHONE_SIMULATOR' para filtrar el código asm. – kennytm

Respuesta

7

Puede definir las opciones del compilador adicional para los archivos fuente individuales de la siguiente manera:

  • primero seleccione el destino que se va a construir
  • clic derecho en el archivo de origen
  • seleccione "Obtener información"
  • clic en la pestaña "Build"
  • definir sus opciones del compilador adicionales

Sin embargo, parece que una mejor solución en su caso es solo duplicar el objetivo y tener dos objetivos, uno para un dispositivo real y otro para el simulador. Hereda configuraciones comunes de compilación desde el nivel del proyecto y simplemente modifique la configuración de compilación por objetivo según sea necesario.

+0

Gracias! Así que esto puede responder a la otra pregunta que iba a preguntar, ¿cómo podría automatizar el indicador de compilación? Podría establecer una fase de script de ejecución que se ejecute antes de la fase de compilación de fuentes y establecer el valor de una variable de entorno de indicadores de compilador, en función de la salida de la variable de entorno de la plataforma de destino. El plano del compilador solo necesita establecerse en un archivo en particular, por lo que creo que puede ser excesivo establecer dos objetivos y crear un indicador de compilador de todo el proyecto ... – Jasarien

2

Llame a GetInfo para el archivo específico, puede establecer las configuraciones de compilación allí para este archivo. Consulte también la Guía de administración de proyectos de XCode al respecto.

6

This entrada de blog por Joshua Nozzi explica cómo hacer esto en Xcode 4, donde dice:

... seleccione su proyecto en el Navegador de proyectos, seleccione el destino correspondiente (que puede tener sólo una), luego seleccione la pestaña Build Fhases. Expande la fase de compilación de fuentes y viola. Una columna de Indicadores del compilador le permite establecer las banderas de cada archivo para ese objetivo.

Cuestiones relacionadas