Comment puis-je limiter une phase de construction «Exécuter le script» à ma configuration de version?

138

J'ai un script shell que je voudrais exécuter à la fin de la phase de construction de ma cible. Cependant, je voudrais que ce script ne s'exécute que lorsque je construis avec la configuration de version . Comment cela peut-il être fait? Merci!

Reed Olsen
la source

Réponses:

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

Le script s'exécutera à la fin de chaque configuration, mais il ne fera rien dans ce cas à moins que la configuration soit Release (en supposant que tout ce qu'il fait est contenu dans le bloc de test).

Jason Coco
la source
1
Je viens de découvrir que cela ne fonctionne pas avec les noms de configuration à plusieurs mots. Cela fonctionne avec "Release" mais pas avec "Internal Beta".
Hedin
4
@Hedin - c'est juste bash; si vous avez une variable à plusieurs mots, vous devez mettre la variable entre guillemets. Donc $ {CONFIGURATION} devient "$ {CONFIGURATION}". Je mettrai à jour la réponse pour inclure cela.
Jason Coco
15
J'ai des configurations 'Debug', 'Release' (pour les instruments), 'Ad Hoc' et 'App Store' (avec une signature de code différente), donc je l'ai changé pour if [ "${CONFIGURATION}" != "Debug" ]; then....
Nicolas Miari
1
Pour la condition if, je veux utiliser un #define TRUE / FALSE stocké dans le fichier .pch .. comment le référencer dans le code de script?
newton_guima
2
Cette même chose peut-elle être accomplie avec des indicateurs de pré-processeur?
Justin Vallely le
15

Le moyen le plus simple de procéder est de cocher la case "Exécuter le script uniquement lors de l'installation".

Menno
la source
4
"L'installation de débogage sur un appareil réel (build & run à partir de Xcode) ne compte pas comme" installation ". Le script d'exécution ne s'exécute que lors de l'archivage (testé avec Xcode 9)." stackoverflow.com/questions/5913199/…
darkheartfelt
2
Cela ne fonctionnera pas si vous souhaitez créer votre application en Releaseconfiguration sans l'archiver. La question portait explicitement sur la Releaseconfiguration.
Legonaftik