在Xcode项目中构建所有目标(或方案)

4
我有一个包含多个目标的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”方案,在构建部分列出六个聚合体。结果出现了以下错误:

enter image description here

还有其他一些关于未能找到预期位置的构建产品的晦涩错误。

第四种方法

接下来,我创建了一个完全在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,并且它能报告成功或失败。

2个回答

0
你可以创建一个虚拟目标,该目标依赖于其他六个目标。在“Build Phases”选项卡中使用目标依赖关系。

我喜欢你的思维方式。我觉得那也应该行得通,但对我来说并没有。我收到了“Rm: ... : 目录非空”的错误提示。我相信问题一定与一个聚合体有其他聚合体作为依赖项的运行脚本有关。在这种情况下,某些东西肯定不正常,因为我知道像这样的依赖关系在其他情况下肯定是有效的。 - John Bushnell

0

sansumbrella在另一个论坛的回答启发。

在您的项目中创建一个新目标(由于我的项目是基于CLI的,因此我选择使用CLI工具)。

根据的说法,您可以创建一个应用程序并删除其plist。我的方法不依赖于任何特殊(或不存在的)plists。

  1. 给您的目标命名,例如ALL,满足其余字段,并按“完成”。

  2. 单击新目标的Build Phases链接并:

  3. 删除Compile Sources中的条目,如果您按照我的方式进行,则为main.c

  4. 打开Target Dependencies并通过单击+或将目标拖入此空间来添加所有其他目标。

当您选择此目标作为活动模式时,现在可以构建清理整个项目。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接