У меня есть проект Xcode со множеством целей. Шесть из них представляют собой агрегаты, которые создают финальные версии продуктов (статические библиотеки, платформы) с использованием сценариев запуска на этапах сборки. Я могу создать их по отдельности, но не могу найти способ нажать «одну кнопку», чтобы собрать их все.
Подход №1
Сначала я попробовал использовать -alltargets из командной строки, вот так:
xcodebuild -project MyProject.xcodeproj -alltargets При этом я получаю ошибки в своих тестовых объектах, утверждая, что они не созданы для тестирования. Я не знаю, что это значит, потому что обычно они «проверяют» правильно. При такой попытке что-то меняется. Но технически сюда входят цели, которые меня не интересуют. Я бы не особо возражал, если бы это сработало.
Подход №2
Затем я попробовал создать агрегат, в котором был бы сценарий запуска, который индивидуально создавал каждую цель агрегата, вот так:
xcodebuild -project MyProject.xcodeproj -target FirstAggregateTarget xcodebuild -project MyProject.xcodeproj -target SecondAggregateTarget xcodebuild -project MyProject.xcodeproj -target ThirdAggregateTarget xcodebuild -project MyProject.xcodeproj -target FourthAggregateTarget xcodebuild -project MyProject.xcodeproj -target FifthAggregateTarget xcodebuild -project MyProject.xcodeproj -target SixthAggregateTarget С точки зрения Xcode он не выдает никаких ошибок, но некоторые агрегаты просто не собираются должным образом. Я думаю, каким-то образом на сценарии запуска в отдельных агрегатах повлиял агрегат верхнего уровня.
Подход №3
Затем я попытался создать новую схему «RELEASE_PRODUCTS», в разделе сборки которой были перечислены шесть агрегатов. При этом я получил такие ошибки:

Были также другие непонятные ошибки, связанные с тем, что продукты сборки не находились там, где они должны были находиться.
Подход №4
Затем я создал скрипт, который запускаю полностью вне Xcode, вот так:
#!/bin/bash # Собирает все релизные продукты xcodebuild -project MyProject.xcodeproj -target FirstAggregateTarget xcodebuild -project MyProject.xcodeproj -target SecondAggregateTarget xcodebuild -project MyProject.xcodeproj -target ThirdAggregateTarget xcodebuild -project MyProject.xcodeproj -target FourthAggregateTarget xcodebuild -project MyProject.xcodeproj -target FifthAggregateTarget xcodebuild -project MyProject.xcodeproj -target SixthAggregateTarget Похоже, это единственное, что работает. Но мне бы хотелось, чтобы это работало изнутри Xcode, желательно, чтобы я мог нажать на это из командной строки, если бы захотел, потому что тогда мне не пришлось бы выходить из IDE, и она могла бы сообщить об успехе или сбое.< /п>
Мобильная версия