以编程方式将源代码添加到 Xcode 目标

Add source code to Xcode target programmatically

我正在使用 protobuf 从原型文件生成 swift 类(我为此编写了一个脚本)。现在我需要将所有生成的文件添加到 Xcode 项目中的目标中。

如何以编程方式执行此操作?也许在 Build Phases 中编写脚本或在 macOS 中执行某些其他类型的操作(Automator?)?

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 添加到项目中

https://github.com/microsoft/plcrashreporter