Как заставить XCode запустить скрипт перед зависимостями?
Сценарий:
я имею TargetA
, которое является приложением для iOS. Это приложение использует статическую библиотеку, скомпилированную TargetB
, Очевидно, что TargetB
это зависимость TargetA
, а также TargetB
всегда построен раньше TargetA
, Все идет нормально.
Теперь я хочу запустить скрипт TargetA
построен, но даже раньшеTargetB
,
Что я пробовал:
- Добавление цели "агрегат" / цель внешней сборки и создание зависимости
TargetA
, Это наполовину работает: Xcode работаетsetup
а такжеTargetB
в то же время, такTargetB
может быть построено слишком рано. Не достаточно хорош. - То же самое, но указав в схеме, не строить параллельно. Это работает, но это пустая трата времени, так как есть другие цели, которые могут быть построены параллельно.
- Запустите скрипт в
pre-action
Построить шаг внутри схемы. Это работает, но кажется неправильным (почему? Вывод с этого шага не попадает в журнал сборки; поэтому, возможно, я не собираюсь использовать его таким образом?).
Что я не хочу делать:
Добавить скрипт как зависимость TargetB
, Это будет работать; тем не мение, TargetB
на самом деле происходит из другого подпроекта, и в контексте его создания параметры сценария еще не известны (в основном это корневой каталог TargetA
проект).
Я что-то пропустил, или я должен согласиться на № 2 или № 3 выше?
РЕДАКТИРОВАТЬ: в варианте № 2, выше, изменение порядка зависимостей (в моем случае, между Setup
а также TargetB
не помогает - Xcode по-прежнему выбирает порядок произвольно.
1 ответ
Запуск сценария как pre-action
Шаг сборки внутри схемы - лучший способ выполнить то, что вы хотите. Обычно этот подход используется для настройки базы номеров сборки проекта в соответствии с состоянием исходного кода ( пример). Что касается захвата выходных данных сценария, к сожалению, единственное, что вы можете сделать, - это перенаправить стандартный вывод сценария в файл журнала. Этот файл журнала может быть частью вашего проекта, поэтому его будет легко просматривать из Xcode.