Как сделать 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.