ios - 如何让 xcode 在依赖项之前运行脚本?

场景:

我有 TargetA,它是一个 iOS 应用程序。这个应用程序使用一个静态库,由 TargetB 编译。 显然,TargetBTargetA的依赖,而TargetB总是在TargetA之前构建。到目前为止一切顺利。

现在,我想要一个运行的脚本 TargetA 已构建,但 甚至在 TargetB 之前。

我尝试了什么:

  1. 添加“设置”聚合/外部构建目标,并使其成为 TargetA 的依赖项。成功了一半:Xcode 同时运行 setupTargetB,所以 TargetB 可能构建得太早。不够好。
  2. 相同,但在方案中指定不要并行构建。这可行,但很浪费,因为还有其他目标可以并行构建。
  3. 在方案内的 pre-action 构建步骤中运行脚本。这可行,但似乎错误(为什么?该步骤的输出不会进入构建日志;所以也许我不打算以这种方式使用它?)。

我不想做的事:

将脚本添加为 TargetB 的依赖项。这会奏效;然而,TargetB实际上来自另一个子项目,在构建它的上下文中,脚本的参数是未知的(主要是TargetA的根目录项目)。

我错过了什么,还是我必须满足于上面的#2 或#3?

EDIT: 在上面的选项 #2 中,更改依赖关系的顺序(在我的情况下,在 SetupTargetB 之间没有帮助 - - Xcode 还是任意选择顺序。

最佳答案

在方案中将脚本作为 pre-action 构建步骤运行是实现您想要的最佳方式。这种方法的一个常见用途是根据源代码控制状态 (example) 调整项目的内部版本号。至于捕获脚本输出,不幸的是,您唯一能做的就是 redirect stdout for the script to a log file .该日志文件可能是您项目的一部分,因此很容易从 Xcode 中查看。

https://stackoverflow.com/questions/13340823/

相关文章:

android - 错误 "cannot find -lrt"为 Android 构建 Boost

c# - TFS 构建测试结果

java - 如何使用命令行在 Linux 下使用 Java 构建 OpenCV?(将在 MapRe

android - 在 gradle 中添加对特定 productFlavor 和 buildTyp

ant - Apache ant 无法识别 'for' 任务/宏,虽然我已经通过 taskdef 添

c++ - 如何让项目将其构建输出与 Scons 放在同一目录中?

c++ - 构建 Boost 动态可链接会导致链接错误?

xcode - 使用运行脚本时更新 Xcode 构建进度条

linux - 下载 tar.gz 包时不支持的协议(protocol)

iphone - 在 Xcode 中将build设置重置为默认值?