Xcode, похоже, не выполняет мою схему последействия - программирование
Подтвердить что ты не робот

Xcode, похоже, не выполняет мою схему последействия

Я использую Xcode (4.6.2), а моя цель - инструмент внешней сборки. Автоматически созданная схема вызывает это просто отлично во время сборки.

В режиме RUNNING мне нужна схема для запуска другой оболочки script. Это было неинтуитивно, но мне это удалось, установив /bin/bash в качестве исполняемого файла и передав мой параметр script.

Единственный шаг, который я хочу сделать, - это выполнить еще один script ПОСЛЕ запуска. И здесь я думал, что будет легко и просто попытаться установить его как пост-действие.

НО что бы ни случилось, я не могу заставить xcode выполнять мое post-action script. Неважно, что это. Я пробовал echo hi > /tmp/testfile даже...

Мне нужно это пост-действие, чтобы немного очистить.


Короче говоря:

  • У меня есть script build_me, который является моим внешним инструментом сборки
  • У меня есть script run_me, что я установил свою схему для запуска
  • У меня есть script cleanup, который я хочу иметь в качестве запуска post-action

Невозможно заставить Xcode запустить мое post-action script или любое.

4b9b3361

Ответ 1

Это работает на XCode 5.0, проверено, я полагаю, что он должен работать так же в 4.6.2.

Пост-действие работает только при выходе из программы из программы

Он не запускается, когда вы нажимаете "Остановить" в XCode или в противном случае завершаете программу. Для моего случая он работает, когда я нажимаю CMD-Q, когда программа находится в фокусе.

Использование файла bash script для пост-действий

Эти настройки работают: enter image description here

Ответ 2

Это немного странно, но Архив выполняет сценарии pre и post при вызове из командной строки.

Итак, я сделал файл archive.sh script в моей папке проекта, я передаю имя проекта (то же самое, что и главная цель, но вы можете настроить это как хотите) в качестве параметра:

xcodebuild clean -project $1.xcodeproj -configuration Release -target $1
xcodebuild archive -project $1.xcodeproj -scheme $1

Затем я создаю целевое имя "Внешняя сборка" "Архив", с. /archive.sh как script.

Когда я создаю эту цель, проект очищается, создается и архивируется. и post script, определенный в схеме, выполняется

Просто замечание, так как я строю из оболочки script, я удалил свой post script в схеме архива, и вместо этого назовите его после моей сборки команд в моем архиве .sh script.

Этот способ дает мне лучший контроль над рабочими каталогами, переменными и все... Это гораздо удобнее

Ответ 3

Я предлагаю вам включить ведение журнала в файл, добавив exec > /tmp/xcode_build.log 2>&1 в начало этапа script.

Вы можете просмотреть журнал, запустив cat /tmp/xcode_build.log в терминале

Это позволит вам распечатывать пути и т.д. и проверять функциональность ваших скриптов.

Чтобы распечатать местоположение script, вы можете указать следующее в своем post-action:

exec > /tmp/my_log_file.txt 2>&1
pwd

Ответ 4

В зависимости от языка программирования, который вы используете, вы можете сделать (это псевдокод):

system( <command> 2>&1 | tee run.log && exit $PIPESTATUS )

Ответ 5

Если кто-то еще сталкивается с этим, я использовал файл script в моей директории проекта, и у файла не было прав доступа для процесса сборки для запуска script. Я сделал следующее в области pre/post action/Run script

chmod 755 ${PROJECT_DIR}/BuildScripts/IncrementBuildNumber.sh
${PROJECT_DIR}/BuildScripts/IncrementBuildNumber.sh