У меня есть проект 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
# Builds all release products
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, и он мог сообщить об успехе или неудаче.