objective c - para - ¿Cómo puedo acceder a una configuración de compilación Xcode definida por el usuario?
xcode for windows (6)
En caso de que alguien más aún esté atascado buscando la forma de hacer macros del preprocesador, busque la sección Apple LLVM - Preprocessing en Build Settings. Debajo de él, verá una sección llamada Macros de preprocesador.
Aquí es donde, de forma predeterminada, Xcode inserta la macro DEBUG = 1 para la configuración de compilación de depuración.
Puedes agregar el tuyo aquí y darles diferentes valores para depuración, lanzamiento y cualquier configuración de compilación personalizada que puedas tener.
Para agregar uno, haga doble clic en la lista de valores actuales para la configuración que desea, y se mostrará un pequeño editor con una macro en cada línea. Solo agregue su propio nombre de macro y asígnele un valor de la misma manera en que se realiza DEBUG.
Estos pueden verificarse durante la fase de compilación del preprocesador utilizando #if, #ifdef etc. para proporcionar códigos o valores condicionales.
Espero que ayude.
Si agregué una configuración definida por el usuario en mi configuración de compilación, ¿cómo puedo leer esa configuración en mi código de Objective-C?
Tengo dos archivos en mi proyecto, debug.plist
y debug.plist
. Quiero que mi archivo MainApp.m
lea uno de estos archivos según la configuración de compilación en ejecución. Configuré una configuración definida por el usuario llamada "nombre de archivo" en las configuraciones de Depuración y Liberación para apuntar al archivo apropiado. Pero no sé cómo mi archivo MainApp.m
puede leer la variable de nombre de archivo de la configuración actual en ejecución.
Esto es lo que hice, no estoy 100% seguro de si esto es lo que buscas:
- Entra en el panel de configuración de compilación y elige el icono de engranaje en la parte inferior izquierda: agregar configuración definida por el usuario
Cree su configuración definida por el usuario, por ejemplo:
MY_LANG -> en_us
Luego, en la configuración de la Macro del preprocesador, puede hacer referencia a ese valor:
LANGCODE="$(MY_LANG)"
Ahora puede referirse a LANGCODE en todos sus archivos de origen, y será lo que haya completado en su configuración de compilación personalizada. Me doy cuenta de que hay un nivel de direccionamiento indirecto aquí, pero eso es intencional en mi caso: mi proyecto XCode contiene un montón de diferentes destinos / configuraciones con sus propias macros de preprocesador. No quiero tener que entrar en todo eso, solo para cambiar el código de idioma. De hecho, defino el código de idioma en el nivel de proyecto. También uso MY_LANG en un par de scripts, así que una macro preprocesadora no funcionaría. Puede haber una manera más inteligente, pero esto funciona para mí.
Intenté la sugerencia de zmippie pero no funcionó para mí.
Lo tengo trabajando con esto:
${MY_LANG}
Puede acceder a su configuración de compilación definida por el usuario en tiempo de ejecución (como se sugiere en un comentario de @JWWalker)
Agregue una entrada a su archivo
Info.plist
yInfo.plist
a su Configuración de compilación definida por el usuarioMySetting -> ${MYSETTING}
Lee su valor del código
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"MySetting"];
Swift 4
Digamos que "nombre de archivo" es la cadena que necesita en su aplicación.
Agregue el nombre de archivo = YOUR_STRING a la configuración definida por el usuario (para depurar y liberar).
Y agrega el nombre de archivo = $ (nombre de archivo) a info.plist.
Luego en el código Swift:
let filename = Bundle.main.infoDictionary?["filename"] as! String
Tu código no puede leer configuraciones de compilación arbitrarias. Necesitas usar macros de preprocesador.
EDITAR: Por ejemplo, en la configuración de destino para la configuración de depuración, puede agregar DEBUGGING=1
en la configuración de compilación de las macros del preprocesador, y no definir DEBUGGING en la configuración de la versión. Luego en tu código fuente puedes hacer cosas como:
#if DEBUGGING
use this file
#else
use the other one
#endif