Variables de entorno Xcode para sub proyectos

Mi proyecto actual de Xcode para iOS utiliza varias bibliotecas estáticas. Los diferentes modules de código en las bibliotecas estáticas tienen varios niveles de debugging que puedo activar / desactivar con #defines desde ese module.

Lo que quiero hacer es tener todo el valor pnetworkingeterminado de debugging desactivado en la biblioteca y luego establecer el nivel de debugging del proyecto principal. Quiero hacer esto, así que cualquier proyecto que use lib debe activar debug explícitamente.

Entonces MainProj usa myLib1 y myLib2, etc. Dentro de myLib1 hay un module llamado fooModule. fooModule tiene un código de debugging como:

#if FOOMODULE_DEBUG_LEVEL > 0 //debug code, console logs etc #endif 

Quiero poder definir FOOMODULE_DEBUG_LEVEL en el proyecto principal para que la biblioteca lo recoja en el momento de compilation y compile adecuadamente.

Yo he tratado:

 #define FOOMODULE_DEBUG_LEVEL 1 

en el proyecto principal .pch y he intentado agregar FOOMODULE_DEBUG_LEVEL como una variable de entorno definida por el usuario con un valor de 1. Ninguno de los cuales fue recogido por el sub proyecto lib.

¿Hay alguna manera de hacerlo o estoy abordando esto de la manera incorrecta?

usted logra esto sin múltiples definiciones creando files xcconfig y luego haciendo reference a ellos o #include incluyéndolos en sus proyectos. por lo tanto, puede aplicar la sugerencia de Mattias y luego definir las defs del preprocesador en el xcconfig. entonces usted tiene un file para cambiar (y una reconstrucción completa si requiere estas definiciones en el file pch, para lo que hay configuraciones separadas).

xcode también le permite asignar xcconfigs por configuration de compilation por separado.

Editaría el esquema y agregaría una secuencia de commands de shell previa a la compilation para establecer las variables adecuadas. Cuando agrega un script, puede establecer de qué objective obtendrá las definiciones.

Tal vez agregue una definición utilizando la configuration de generación "Preprocessor macros" a los objectives y / o depurar / liberar configuraciones de compilation donde desee habilitar la debugging.

En su caso, haría doble clic en la columna de valor y luego en "+" para agregar una nueva macro. El marco sería "FOOMODULE_DEBUG_LEVEL = 1", que debería dar como resultado -DFOOMODULE_DEBUG_LEVEL=1 al comstackdor.

Solución

1) Objetivo> Configuración de compilation> Macros del preprocesador. Establezca la variable de entorno como preprocesador def para el objective (parece que debe ser objective en lugar de proyecto), por ejemplo, DEBUG_VARIABLE = 1

2) Proyecto> Fases de compilation> Agregue fase de compilation. Luego, en el script Ejecutar exporta la variable: export DEBUG_VARIABLE

Todos los subproyectos ahora recogen esta variable de entorno.

Creo que lo ideal sería utilizar también la sugerencia de Justin de tener un file .xcconfig con todas las macros del preprocesador definidas en un solo lugar para facilitar su edición. Por mi vida no puedo hacer que esto funcione. Si pongo esto en el file .xcconfig: GCC_PREPROCESSOR_DEFINITIONS = DEBUG_VARIABLE = 1 $ (henetworkingado) A continuación, base la debugging y / o versión de compilation en esta configuration, la variable de entorno DEBUG_VARIABLE nunca se establece.