依赖于生成的可执行文件的Xcode外部生成工具目标

依赖于生成的可执行文件的Xcode外部生成工具目标,xcode,xcodebuild,Xcode,Xcodebuild,我正在编写一个swift CLI应用程序,并正在使用进行验收测试。我有一个“外部构建工具”目标,它从shell脚本调用BAT。此目标声明对几个CLI应用程序可执行目标(包括我的主应用程序)的依赖关系。然后我有一个构建Bats目标并运行XCTest目标的方案 我无法始终如一地保证可执行依赖项在调用Bats脚本之前完全完成构建。无论我是否将我的方案声明为可并行,我都会遇到调用Bats脚本的问题,但它找不到它所依赖的可执行文件之一,因为它尚未添加到$TARGET\u BUILD\u DIR 从构建日志

我正在编写一个swift CLI应用程序,并正在使用进行验收测试。我有一个“外部构建工具”目标,它从shell脚本调用BAT。此目标声明对几个CLI应用程序可执行目标(包括我的主应用程序)的依赖关系。然后我有一个构建Bats目标并运行XCTest目标的方案

我无法始终如一地保证可执行依赖项在调用Bats脚本之前完全完成构建。无论我是否将我的方案声明为可并行,我都会遇到调用Bats脚本的问题,但它找不到它所依赖的可执行文件之一,因为它尚未添加到$TARGET\u BUILD\u DIR

从构建日志中,我总能看到所需的可执行目标已完成编译,但当问题发生时,目标明显缺少
链接
签名
、以及
注册执行策略异常的已完成步骤

我对这个问题最好的解释是,只有在所有依赖项都完成编译后,Xcode才会释放目标依赖项的锁,而不一定是在这些目标的构建完全完成时


我发现的最可靠的解决方法是在调用Bats之前在shell脚本中
休眠1
。我还尝试在外部构建工具目标和依赖项之间放置一个聚合目标,但这并不可靠有没有办法让Xcode延迟外部构建工具的执行,直到相关目标的构建完全完成?

您好。我现在也有同样的问题。我有两个目标A和B。A依赖于B。当我构建A时,它首先构建B,并将B的框架输出复制(通过运行脚本)到特定文件夹。此文件夹路径用于搜索头文件。我有点怀疑Xcode构建目标是为了在运行脚本还没有完成的时候提前完成。我正在寻找方法来延迟它或使它完全同步。你找到更好的方法了吗?嗨。我现在也有同样的问题。我有两个目标A和B。A依赖于B。当我构建A时,它首先构建B,并将B的框架输出复制(通过运行脚本)到特定文件夹。此文件夹路径用于搜索头文件。我有点怀疑Xcode构建目标是为了在运行脚本还没有完成的时候提前完成。我正在寻找方法来延迟它或使它完全同步。你找到更好的方法了吗?