Xcode: создать зависимость между одним файлом и другим
Мы используем специальный компилятор для компиляции некоторых ресурсов для нашего проекта. Эти ресурсы основаны на тексте и имеют .ink
расширение. Мы используем пользовательское правило сборки для этих ink
файлы. (см. сноску, если вы заинтересованы в том, что они есть!)
Наш чернильный компилятор укореняется ink
файл, который может иметь include
заявления для других ink
файлы. Итак, в проекте Xcode мы включаем только корневой ink
файл, чтобы он не пытался скомпилировать ребенка ink
файлы самостоятельно.
Однако теперь у нас есть проблема, что если вы поменяете одного из детей ink
файлы, Xcode не знает, чтобы перекомпилировать родительский.
Есть ли какой-нибудь нестандартный скрипт сборки, который мы могли бы сделать, чтобы автоматически затрагивать корневой файл, если какой-либо из дочерних элементов был изменен? Или какую-то зависимость мы могли бы установить? (В настоящее время мы прикасаемся к корневому файлу при каждой сборке, но это будет происходить слишком медленно по мере роста проекта)
Мы действительно не хотим менять способ работы чернильного компилятора, чтобы сделать это!
ps если вам интересно, что за чертовы эти чернильные файлы: это файлы историй - мы разрабатываем текстовые повествовательные игры для iOS.
2 ответа
Если вы выберите свой проект в XCode и перейдете к "Фазы сборки", вы можете добавить сценарии оболочки в процесс сборки вашего приложения. Возможно, это может быть хорошим началом для проверки необходимости перекомпиляции ваших чернильных файлов.
Больше информации здесь: Запуск скрипта при создании продукта
Я закончил тем, что создал кастом makefile
и затем создаем фазу сборки "Run Script", которая называется make
в каталоге, который содержал ink
файлы.
Я не знаю много о make-файлах, но вот что я собрал вместе на основе онлайн-уроков:
ALL_CHILD_INK = subdir/*.ink
FINAL_FILENAME = root_filename
$(FINAL_FILENAME).json: $(FINAL_FILENAME).ink $(ALL_CHILD_INK)
ink_compiler $< $@
По сути, это простой make-файл, который гарантирует, что все дочерние файлы являются зависимостями для основного корневого файла.