Jak mogę ograniczyć fazę kompilacji „Uruchom skrypt” do konfiguracji mojej wersji?

141

Mam skrypt powłoki, który chciałbym uruchomić pod koniec fazy budowania celu. Jednak chciałbym, aby ten skrypt działał tylko wtedy, gdy kompiluję z konfiguracją wydania . Jak można to zrobić? Dzięki!

Reed Olsen
źródło

Odpowiedzi:

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

Skrypt zostanie uruchomiony na końcu każdej konfiguracji, ale w tym przypadku nic nie zrobi, chyba że konfiguracja to Release (zakładając, że wszystko, co robi, jest zawarte w bloku testowym).

Jason Coco
źródło
1
Właśnie odkryłem, że nie działa z wielowyrazowymi nazwami konfiguracji. Działa z wersją „Release”, ale nie działa z „Internal Beta”.
Hedin
4
@Hedin - to jest po prostu bash; jeśli masz zmienną składającą się z wielu słów, musisz ująć ją w cudzysłów. Więc $ {KONFIGURACJA} staje się „$ {KONFIGURACJA}”. Zaktualizuję odpowiedź, aby to uwzględnić.
Jason Coco
16
Mam konfiguracje „Debug”, „Release” (dla instrumentów), „Ad Hoc” i „App Store” (z innym podpisem kodu), więc zmieniłem je dla if [ "${CONFIGURATION}" != "Debug" ]; then....
Nicolas Miari,
1
W przypadku warunku if chcę użyć #define PRAWDA / FAŁSZ przechowywanego w pliku .pch .. w jaki sposób miałbym odwołać się do niego w kodzie skryptu?
newton_guima,
2
Czy to samo można osiągnąć za pomocą flag preprocesora?
Justin Vallely,
17

Najłatwiejszym sposobem jest zaznaczenie pola wyboru „Uruchom skrypt tylko podczas instalacji”.

Menno
źródło
4
„Instalowanie debugowania na rzeczywistym urządzeniu (kompilacja i uruchamianie z Xcode) nie liczy się jako„ instalowanie ”. Skrypt uruchamiania działa tylko podczas archiwizacji (testowany z Xcode 9).” stackoverflow.com/questions/5913199/ ...
darkheartfelt
2
To nie zadziała, jeśli chcesz zbudować aplikację w Releasekonfiguracji bez jej archiwizacji. Pytanie dotyczyło wprost Releasekonfiguracji.
Legonaftik