Внешняя цель инструмента сборки Xcode с зависимостями от встроенных исполняемых файлов - PullRequest
0 голосов
/ 13 января 2020

Я пишу быстрое приложение CLI и выполняю на нем приемочные испытания с использованием Bats (Bash Automated Testing System) . У меня есть цель "внешний инструмент сборки", которая вызывает летучих мышей из сценария оболочки. Эта цель объявляет зависимости от нескольких исполняемых целей приложения CLI (включая мое основное приложение). Затем у меня есть схема, которая создает цель Bats, а также запускает цель XCTest.

Я не смог последовательно гарантировать, что исполняемые зависимости завершат полное построение sh до вызова сценария Bats. Независимо от того, объявляю ли я свою схему распараллеливаемой или нет, я непоследовательно столкнусь с проблемами, при которых вызывается скрипт Bats, но он не может найти один из исполняемых файлов, от которого он зависит, поскольку он еще не был добавлен в $ TARGET_BUILD_DIR.

Из журналов сборки я всегда вижу, что нужная исполняемая цель завершила компиляцию, но когда возникает проблема, цель явно пропускает завершенные шаги для Link <executable>, Sign <executable> и Register execution policy exception for <executable>.

Моя лучшая интерпретация проблемы заключается в том, что XCode снимает блокировки для цели с зависимостями только после того, как все зависимости завершили компиляцию, и не обязательно, когда сборки для этих целей завершены полностью.

Самый надежный обходной путь, который я нашел, - это sleep 1 в моем скрипте оболочки перед вызовом Bats. Я также попытался поместить совокупную цель между моей внешней целью инструмента сборки и зависимостями, но это не сработало надежно. Есть ли способ заставить Xcode задержать выполнение внешнего инструмента сборки, пока сборка зависимых целей не будет полностью завершена?

...