Как сделать xcode запустить script до зависимостей?

Сценарий:

У меня есть TargetA, который является приложением iOS. Это приложение использует статическую библиотеку, скомпилированную с помощью TargetB. Очевидно, что TargetB является зависимостью TargetA, а TargetB всегда строится до TargetA. Пока все хорошо.

Теперь я хочу, чтобы script запускал TargetA, но еще до TargetB.

То, что я пробовал:

  • Добавление цели агрегата/внешней сборки "setup" и создания зависимости от TargetA. Он работает наполовину: Xcode запускает setup и TargetB одновременно, поэтому TargetB может быть создан слишком рано. Не достаточно.
  • То же самое, но указывая в схеме не строить параллельно. Это работает, но это отходы, так как есть другие цели, которые может быть построены параллельно.
  • Запустите script на этапе сборки pre-action внутри схемы. Это работает, но кажется неправильным (почему? Вывод с этого шага не входит в журнал построения, поэтому, возможно, я не намерен использовать его таким образом?).

Что я не хочу делать:

Добавьте script как зависимость от TargetB. Это сработает; однако TargetB фактически исходит из другого подпроекта, и в контексте его построения параметры для script пока не известны (в основном корневой каталог проекта TargetA).

Я что-то пропустил, или мне нужно согласиться на # 2 или # 3 выше?

EDIT: в опции № 2 выше, изменение порядка зависимостей (в моем случае между setup и TargetB не помогает - Xcode по-прежнему выбирает порядок произвольно.

Ответ 1

Выполнение script как шага pre-action построения внутри схемы - лучший способ выполнить то, что вы хотите. Общепринятое использование этого подхода состоит в том, чтобы скорректировать базу номера проекта в исходном состоянии управления (пример). Что касается вывода script, к сожалению, единственное, что вы можете сделать, это перенаправить stdout для script в файл журнала. Этот файл журнала может быть частью вашего проекта, поэтому его можно будет легко просмотреть из Xcode.