以编程方式将源代码添加到 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 添加到项目中
我正在使用 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 添加到项目中