我有一个包含多个目标的Xcode项目。其中六个是聚合目标,使用Build Phases下的Run Scripts构建最终发布产品(静态库、框架)。我可以单独构建它们,但我找不到任何方法来“一键”构建它们。
方法 #1
首先,我尝试在命令行中使用-alltargets命令,如下所示:
xcodebuild -project MyProject.xcodeproj -alltargets
在这种情况下,我的测试目标出现错误,称它们未构建用于测试。我不知道这是什么意思,因为它们通常会正确“测试”。尝试使用这种方式时,某些内容是不同的。但从技术上讲,它包括我不感兴趣的目标。如果可以解决问题,我倒不介意。
第二种方法
接下来,我尝试创建一个集合体,其中有一个运行脚本单独构建每个集合体目标,如下所示:
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没有报任何错误,但是有几个聚合体都无法正确构建。我猜想是因为顶层聚合体影响了各个聚合体中的运行脚本。
第三种方法
接下来,我尝试创建一个新的“RELEASE_PRODUCTS”方案,在构建部分列出六个聚合体。结果出现了以下错误:
还有其他一些关于未能找到预期位置的构建产品的晦涩错误。
第四种方法
接下来,我创建了一个完全在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,并且它能报告成功或失败。