2011-07-15 16 views
6

Tengo una aplicación denominada MyApp que está vinculado a una biblioteca estática MyLibrary He añadido el proyecto MyLibrary a Xcode, y añadió la MyLibrary segmentar a MyApp 'dependencias de destino. Todo esto funciona bien, puedo establecer puntos de interrupción, y estoy bastante feliz.Xcode 4: definir una macro preprocesador en un objetivo depende

La cosa es que quiero un registro condicional en la biblioteca:

#ifdef DEBUG 
# define MYDebug(msg, ...) NSLog(@"\nDEBUG -> %@ \n(%s:%d)",[NSString stringWithFormat:msg, ## __VA_ARGS__], __PRETTY_FUNCTION__,__LINE__); 
#else 
# define MYDebug(msg, ...) 
#endif 

Así que tengo configuración de dos acumulación de mi biblioteca: - depuración tiene "debug = 1" en configuración de generación del objetivo en "macros del preprocesador" - Prod tiene nada

Y el objetivoMyLibrary se establece en la construcción con la configuración de depuración de construcción.

Esto funciona bien si construyo la biblioteca estática (.a) y la incluyo en un proyecto. Pero si está construido por dependencia de destino, parece que DEBUG no está definido (MYDebug no registra nada).

También intenté establecer DEBUG = 1 en MyApp, pero no funciona.

¿Hay algo que eché de menos u otra forma de hacerlo?

+0

Sí, de alguna manera has pasado por alto algo: lo que estás tratando de hacer es bastante básico y fundamental. ¿Qué versión de XCode estás usando? ¿Intentó 'Limpiar' (Apple-Shift-k) a su objetivo? – hooleyhoop

+0

XCode 4. Tal vez es básico, pero soy nuevo en el desarrollo de bibliotecas, y estoy confundido porque funciona, excepto cuando la biblioteca está construida desde otro proyecto, como una dependencia. Intentaré limpiar, pero dudo que ayude. – Julien

+0

Solo quiero decir que tiene toda la razón al esperar que esto funcione sin problemas. La limpieza a menudo ayuda, por favor háganos saber. – hooleyhoop

Respuesta

8

Simplemente debe ser "DEBUG" en lugar de "DEBUG = 1". Asimismo, para utilizar una macro que necesita una asignación de objetos (NSString, etc.) que necesita para escapar de la mayor parte de los personajes como @ y " etc ..

Aquí está una captura de pantalla de un proyecto de trabajo mío de xCode 4.1:

enter image description here

+0

Gracias por responder. No veo por qué DEBUG = 1 no funcionará mientras DEBUG lo hará. Y respecto al escape de los personajes tampoco parece ser el problema, ya que funciona bien cuando construyo la biblioteca – Julien

Cuestiones relacionadas