【发布时间】:2017-08-03 15:03:23
【问题描述】:
我正在使用 protobuf 从 protofiles 生成 swift 类(为此我编写了一个脚本)。现在我需要将所有生成的文件添加到 Xcode 项目中的目标中。
如何以编程方式做到这一点?可能是构建阶段中的脚本或 macOS 中的其他类型的操作(Automator?)?
【问题讨论】:
标签: ios swift xcode code-generation target
我正在使用 protobuf 从 protofiles 生成 swift 类(为此我编写了一个脚本)。现在我需要将所有生成的文件添加到 Xcode 项目中的目标中。
如何以编程方式做到这一点?可能是构建阶段中的脚本或 macOS 中的其他类型的操作(Automator?)?
【问题讨论】:
标签: ios swift xcode code-generation target
CocoaPods 使用该项目修改项目文件:https://github.com/CocoaPods/Xcodeproj
【讨论】:
使用 Xcode 内置的功能可以做到这一点(我们已经用 c++ 做到了,但应该也可以使用 swift):
在您的目标中,添加与您的原型文件扩展名匹配的自定义 shell 脚本构建规则。
使用"${INPUT_FILE_PATH}" 和"${SCRIPT_OUTPUT_FILE_0}" 调用您的脚本。
如果输出文件的扩展名与另一个构建规则匹配,则会执行该构建规则。因此,在您的情况下,将构建规则的输出文件设置为 ${DERIVED_FILE_DIR}/${INPUT_FILE_BASE}.swift 以便将其发送到 swift 编译器。
现在转到目标的编译源构建阶段并添加原型文件。
【讨论】:
您可以通过 Xcode“构建规则”来做到这一点
检查这个利用“构建规则”生成源代码文件并将它们从protobuf添加到项目中的项目
【讨论】: