Xcode新增Run Script Phase时如何正确配置输出文件路径?
Xcode Run Script 生成Swift文件路径配置解答
1. $(DERIVED_FILE_DIR) 作用说明
$(DERIVED_FILE_DIR)是Xcode预设的编译派生文件目录,默认用于存放编译过程中产生的临时中间文件,比如自动生成的头文件、中间源码等,该目录存在于Xcode的全局编译缓存路径下,不会纳入你的项目代码仓库,每次执行Clean Build操作时目录内的内容会被全部清空,因此不适合存放需要持久化到项目内的生成文件。
2. 输出文件存储到项目目录的配置步骤
- 修改输出文件路径:将Run Script配置栏中默认的输出路径
$(DERIVED_FILE_DIR)/newOutputFile替换为你项目内的目标路径,参考输入文件的路径规则,你可以使用$(SRCROOT)定位项目根目录,比如要输出到项目MyProject目录下的Generated子文件夹,路径可以写为$(SRCROOT)/MyProject/Generated/MyData.swift。 - 自动创建父目录:Run Script不会自动生成不存在的上级文件夹,你可以选择手动在项目内提前创建对应的目标文件夹,也可以在你的执行脚本最开头添加如下命令自动创建:
mkdir -p $(dirname "$SCRIPT_OUTPUT_FILE_0") - 调整生成逻辑:将你的Swift可执行文件的输出路径指向
$SCRIPT_OUTPUT_FILE_0这个环境变量即可,Xcode会自动将你配置的输出路径赋值给该变量。 - 加入编译序列:第一次执行脚本生成Swift文件后,将该文件拖入Xcode项目导航栏,勾选对应的Target,确保后续编译时该文件会被纳入编译流程。
3. 可选优化配置
- 勾选Run Script配置栏的
Based on dependency analysis选项,Xcode会自动检测输入的plist文件是否有改动,仅当输入文件更新时才会执行脚本生成新的Swift文件,减少不必要的编译耗时。 - 可根据团队规范选择是否将生成的Swift文件纳入Git管理:如果选择每次编译自动生成,可将文件路径加入
.gitignore;如果希望降低新成员拉取代码后的配置成本,可以直接将生成的文件提交到代码仓库。
内容的提问来源于stack exchange,提问作者SwiftedMind
相关产品推荐
相关产品推荐

