2009-09-09 14 views
15

Estoy usando Xcode 3.2 con xcconfig archivos. Los archivos están organizados por objetivo. Por ejemplo, tengo un archivo debug.xcconfig y uno release.xcconfig. Ambos usan configuraciones comunes, así que agregué un archivo shared.xcconfig que está incluido por ambos.Xcode: cómo configurar el entorno de depuración con múltiples archivos xcconfig?

El archivo shared.xcconfig se parece a esto:

GCC_C_LANGUAGE_STANDARD = c99 
GCC_WARN_ABOUT_RETURN_TYPE = YES 
GCC_WARN_UNUSED_VARIABLE = YES 
GCC_PREPROCESSOR_DEFINITIONS = SOME_COMMON_DEFINITIONS 

El archivo debug.xcconfig se ve así:

#include "Shared.xcconfig" 
GCC_OPTIMIZATION_LEVEL = 0 

Ahora, me gustaría añadir una definición DEBUG preprocesador en el archivo debug.xcconfig. Como se muestra en this question, se supone que el siguiente método para trabajar:

GCC_PREPROCESSOR_DEFINITIONS = "$(GCC_PREPROCESSOR_DEFINITIONS) DEBUG" 

esto no funciona en Xcode 3.2. La documentación de Xcode también menciona explícitamente que no es posible modificar las variables, solo puede sobrescribirlas.

¿Cómo podrían resolver este problema?

Respuesta

17

La forma en que hemos abordado esto en el pasado es hacer que cada capa componga un subconjunto de las definiciones, luego unirlas en el nivel de hoja xcconfig.

En shared.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS_SHARED = qFoo qBar qBaz 

En debug.xcconfig:

GCC_PREPROCESSOR_DEFINITIONS_DEBUG = qDebug 
GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_SHARED) $(GCC_PREPROCESSOR_DEFINITIONS_DEBUG) 

(La ventaja de hacer las variables de subconjunto verbosa es que son lexicográficamente similar al valor que se utilizan para componer, haciéndolos más fácil de encontrar en el archivo de configuración.)

+0

Otra solución, si no se puede editar fácilmente el nombre de variable en el xcconfig se incluye, es establecer la xcconfig desea incluir para el proyecto y una más específica para la diana. Esto hará que la herencia funcione. Vea este comentario del problema de Github para más información: https://github.com/CocoaPods/CocoaPods/issues/1212#issuecomment-52272400 –

-1

¿Qué hay de usar $ (heredado)?

GCC_PREPROCESSOR_DEFINITIONS = $ (heredado) DEBUG

+2

Sería bueno si funcionara, pero desafortunadamente no lo hace en los archivos .xcconfig. –

1

siguiente debe funcionar:

xcodebuild GCC_PREPROCESSOR_DEFINITIONS='$(value) BAR=1' 
5

También puede utilizar el siguiente formato en un archivo .xcconfig. (funciona en xcode 4, no probado en xcode 3). Es solo un ejemplo, parece funcionar para todas las configuraciones.

ARCHS=i386 x86_64 
ARCHS[config=Debug]=i386 
ARCHS[config=Release]=i386 x86_64 
Cuestiones relacionadas