Как я могу ограничить этап сборки «Выполнить сценарий» конфигурацией моего выпуска?

138

У меня есть сценарий оболочки, который я хотел бы запустить в конце фазы сборки моей цели. Однако я хотел бы, чтобы этот сценарий запускался только при сборке с конфигурацией выпуска . Как это может быть сделано? Спасибо!

Рид Олсен
источник

Ответы:

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

Сценарий будет выполняться в конце каждой конфигурации, но в этом случае он ничего не будет делать, если конфигурация не является Release (при условии, что все, что он делает, содержится в тестовом блоке).

Джейсон Коко
источник
1
Я только что обнаружил, что он не работает с многословными именами конфигурации. Он работает с "Release", но не с "Internal Beta".
Hedin
4
@Hedin - это просто баш; если у вас есть переменная, состоящая из нескольких слов, вам нужно заключить переменную в кавычки. Таким образом, $ {CONFIGURATION} становится "$ {CONFIGURATION}". Я обновлю ответ, чтобы включить это.
Джейсон Коко,
15
У меня есть конфигурации Debug, Release (для инструментов), Ad Hoc и App Store (с другой подписью кода), поэтому я изменил их на if [ "${CONFIGURATION}" != "Debug" ]; then....
Николас Миари
1
Для условия if я хочу использовать #define TRUE / FALSE, хранящийся в файле .pch .. как мне ссылаться на него в коде скрипта?
newton_guima
2
Можно ли сделать то же самое с флагами препроцессора?
Джастин Валлели
15

Самый простой способ сделать это - установить флажок «Запускать скрипт только при установке».

Менно
источник
4
«Установка отладки на реальном устройстве (сборка и запуск из Xcode) не считается« установкой ». Сценарий выполнения запускается только при архивировании (проверено с Xcode 9)». stackoverflow.com/questions/5913199/…
darkheartfelt
2
Это не сработает, если вы хотите создать свое приложение в Releaseконфигурации без его архивирования. Вопрос был явно о Releaseконфигурации.
Legonaftik