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

问题描述 投票:0回答:3

我有一个包含许多目标的 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,它可以报告成功或失败。

ios xcode build xcodebuild xcode-project
3个回答
0
投票

您可以制作一个依赖于其他六个目标的虚拟目标。在构建阶段选项卡中使用目标依赖关系


0
投票

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

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

根据

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

  1. 为您的目标命名,例如

    ALL,满足其余字段的要求,然后按“完成”。

  2. 单击新目标的

    Build Phases

     链接,然后:

  3. 删除

    编译源中的条目,如果您按照我的方式进行操作,则将是main.c

  4. 打开

    目标依赖项,然后通过单击 +

     或将目标拖到此空间来添加所有其他目标。

当您选择此目标作为活动模式时,您现在可以构建

清理整个项目。


0
投票
Xcode 现在似乎有一个可以用于此目的的“聚合”目标。转到文件→新建→目标...,选择其他→聚合,然后将其他目标添加为依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.