¿Cómo puedo limitar una fase de compilación "Ejecutar script" a mi configuración de lanzamiento?


138

Tengo un script de shell que me gustaría ejecutar al final de la fase de compilación de mi objetivo. Sin embargo, me gustaría que este script solo se ejecute cuando compile con la configuración de lanzamiento . ¿Cómo se puede hacer esto? ¡Gracias!

Respuestas:


295
if [ "${CONFIGURATION}" = "Release" ]; then
  echo Do something really release-like
fi

El script se ejecutará al final de cada configuración, pero no hará nada en este caso a menos que la configuración sea Release (suponiendo que todo lo que hace está contenido dentro del bloque de prueba).


1
Acabo de descubrir que no funciona con nombres de configuración de múltiples palabras. Funciona con "Release" pero no con "Internal Beta".
Hedin

44
@Hedin: eso es simplemente bash; Si tiene una variable de varias palabras, debe rodear la variable entre comillas. Entonces $ {CONFIGURATION} se convierte en "$ {CONFIGURATION}". Actualizaré la respuesta para incluir eso.
Jason Coco

15
Tengo las configuraciones 'Debug', 'Release' (para instrumentos), 'Ad Hoc' y 'App Store' (con diferente firma de código), así que lo cambié por if [ "${CONFIGURATION}" != "Debug" ]; then....
Nicolas Miari

1
Para la condición if, quiero usar un #define TRUE / FALSE almacenado en el archivo .pch ... ¿cómo lo referenciaría en el código del script?
newton_guima

2
¿Se puede lograr lo mismo con banderas de preprocesador?
Justin Vallely

15

La forma más fácil de hacer esto es marcar la casilla de verificación "Ejecutar script solo al instalar".



44
"La instalación de depuración en un dispositivo real (compilación y ejecución desde Xcode) no cuenta como" instalación ". El script de ejecución solo se ejecuta al archivar (probado con Xcode 9)". stackoverflow.com/questions/5913199/…
darkheartfelt

2
No funcionará si desea construir su aplicación en Releaseconfiguración sin archivarla. La pregunta era explícitamente sobre la Releaseconfiguración.
Legonaftik
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.