Xcode: запуск скрипта перед каждой сборкой, которая напрямую изменяет исходный код

Что я сделал:

У меня есть скрипт, который

Прочитайте некоторые файлы конфигурации, чтобы сгенерировать фрагменты исходного кодаНайти соответствующие исходные файлы Objective-C иЗамените некоторые части исходного кода сгенерированным кодом на шаге 1.

и Makefile, который имеет специальный файл меток времени в качестве цели создания и файлы конфигурации в качестве целевых источников:

SRC = $(shell find ../config -iname "*.txt")
STAMP = $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME).stamp
$(STAMP): $(SRC)
    python inject.py
    touch $(STAMP)

Я добавил этот Makefile в качестве «Фазы сборки Run Script» поверх стека фаз сборки для цели проекта.

Что случилось:

Фаза сборки скрипта была запущена до компиляции исходного кода.

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

1-й запуск: Xcode собирает информацию о зависимостях ---> без изменений1-й запуск: Xcode запускает "Run Script Build Phase" ---> источник меняется за спиной Xcode1-й запуск: Xcode завершает сборку, думая, что ничего не нужно обновлять2-й запуск: Xcode собирает информацию о зависимостях ---> источник изменился, требуется перестройка!2-й запуск: Xcode запускает этап запуска сценария сборки "---> все обновлено2-й прогон: Xcode переходит к компиляции

После прочтенияДокументация XCode на этапах сборкиЯ попытался добавить исходный файл, который, как известно, обновляется при каждом запуске сценария в качестве результата «Выполнить этапы сборки сценария», но ничего не изменилось. Поскольку количество файлов конфигурации может варьироваться в моем проекте, я не хочу указывать каждый входной и выходной файл.

Вопрос:

Как я делаю, чтобы Xcode знал об изменениях исходного файла, сделанных во время "Фазы Построения Сценария Запуска"?

Редактировать:Добавлено, что я поместил фазу сборки скрипта перед другими фазами сборки

Ответы на вопрос(5)

Ваш ответ на вопрос