¿Es posible establecer un símbolo para la compilación condicional configurando propiedades en un proyecto de Xcode?
Mi objetivo es crear un símbolo que esté disponible para todos los archivos, sin tener que usar importar / incluir, de modo que un conjunto de clases comunes pueda tener un comportamiento especial en algunos proyectos. Como el siguiente, pero con mis propios símbolos.
#if TARGET_IPHONE_SIMULATOR
...
#endif
objective-c
xcode
c-preprocessor
Steph Thirion
fuente
fuente
Respuestas:
Vaya a la configuración de su objetivo o proyecto, haga clic en el icono de engranaje en la parte inferior izquierda y seleccione "Agregar configuración definida por el usuario". El nuevo nombre de configuración debería ser
GCC_PREPROCESSOR_DEFINITIONS
, y puede escribir sus definiciones en el campo de la derecha.Según los comentarios de Steph, la sintaxis completa es:
Tenga en cuenta que no necesita el '=' si solo desea #definir un símbolo, en lugar de darle un valor (para
#ifdef
declaraciones)fuente
No es necesario crear una configuración definida por el usuario. La configuración incorporada "Macros de preprocesador" funciona bien. texto alternativo http://idisk.mac.com/cdespinosa/Public/Picture%204.png
Si tiene varios objetivos o proyectos que usan el mismo archivo de prefijo, use Macros de preprocesador no utilizadas en encabezados precompilados, de modo que las diferencias en la definición de su macro no activen un conjunto adicional innecesario de encabezados precompilados.
fuente
Como apéndice, si está utilizando esta técnica para definir cadenas en su objetivo, así es como tuve que definirlas y usarlas:
En Build Settings -> Preprocessor Macros, y sí, las barras invertidas son críticas en la definición:
Y en el código fuente:
fuente
Puede utilizar el
*_Prefix.pch
archivo para declarar macros de todo el proyecto. Ese archivo suele estar en su grupo Otras fuentes .fuente
Está en "GCC 4.2 Preprocessing" (o simplemente ponga "prepro" en el cuadro de búsqueda) ...
... sin embargo, por mi vida no puedo hacer que funcione.
Tengo mis configuraciones estándar de depuración y lanzamiento, y quiero definir DEBUG = 1 en la configuración de depuración. Pero después de agregarlo como valor:
(en la ventana de configuración)> Macros de preprocesador: DEBUG = 1
... nunca imprime / recibe llamadas. Me esta volviendo loco...
fuente
#if DEBUG
vida :) stackoverflow.com/a/47395485/2778502En respuesta al comentario de Kevin Laity (ver la respuesta de cdespinosa), acerca de la sección de preprocesamiento de GCC que no se muestra en la configuración de su compilación, haga que Active SDK sea el que dice (Base SDK) después y aparecerá esta sección. Puede hacer esto eligiendo el menú Proyecto> Establecer destino activo> XXX (SDK base). En diferentes versiones de XCode (Base SDK) puede ser diferente, como (Configuración del proyecto o Predeterminado del proyecto).
Después de que aparezca esta sección, puede agregar sus definiciones a las macros del procesador en lugar de crear una configuración definida por el usuario.
fuente
Para proyectos Xcode 9.4.1 y C ++. Agregar
const char*
macros de preprocesador a las compilaciones de depuración y versión .Seleccione su proyecto
Seleccionar configuración de compilación
Buscar " Macros de preprocesador "
Abrir lista interactiva
Agregue sus macros y no olvide escapar de la cita
Usar en el código fuente como común
const char*
fuente
Puede duplicar el destino que tiene la sección de preprocesamiento, cambiarle el nombre a cualquier nombre que desee y luego cambiar el valor de la macro de preprocesador.
fuente