Предварительная обработка Info.plist в Xcode 4 - PullRequest
4 голосов
/ 15 сентября 2011

Я пытаюсь использовать предварительную обработку Info.plist, доступную в XCode, чтобы я мог вставить последний идентификатор git commit в Info.plist приложения.Он отлично работает в Xcode 3, используя описанную здесь методику: http://www.cimgf.com/2011/02/20/revisiting-git-tags-and-building/ Однако, когда я пробую это в Xcode 4, похоже, что после первой сборки никакая предварительная обработка не выполняется.

Что я вижу:

  • Начиная с чистого листа при создании моей цели, InfoPlist.h создается с правильным содержимым, цель собирается и успешно работает, и я могу получить доступ к значению во время выполнения.
  • Создайте новый коммит для изменения идентификатора коммита HEAD.
  • Снова создайте мою цель, обновится InfoPlist.h, чтобы получить новый идентификатор фиксации, цель создаст и успешно выполнится, однако значениев информационном словаре находится идентификатор предыдущего коммита.

Похоже, Xcode выполняет шаг сборки скрипта, но не обрабатывает мой Info.plist, а использует кешированную версию.Есть мысли о том, как это исправить?

Я пытался удалить InfoPlist.h в качестве шага пост-сборки, чтобы он всегда был вновь измененным файлом, но это не имело значения.

Обновление: Выполнение очистки, а затем повторное построение приводит к появлению правильного значения.Однако мне не нужно очищать свою цель каждый раз, когда я делаю коммит.

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Первое, что вам нужно сделать, это подать отчет об ошибке .Я думаю, что это ошибка.

В качестве временного решения вы можете попробовать отредактировать вашу схему, выбрать действие Build, развернуть треугольник раскрытия и добавить действие Pre .Скрипт, который запускает touch для файла PLIST.Это должно исправить это сейчас.

0 голосов
/ 27 февраля 2013

Если ваш сценарий находится в агрегированной цели и реализован как целевая зависимость, это должно работать без очистки проекта:

plist=${PROJECT_DIR}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist

touch $plist
...