Swift如何在不使用SPM管理的项目中使用宏

617 阅读1分钟

swift宏虽然很好用,不过目前官方只给出了通过SPM的方式使用宏,本文将介绍如何在不使用SPM管理的项目中使用已经通过SPM编译好的宏。

编译宏

首先通过官方的方式,通过SPM创建一个宏,然后使用命令行工具 cd 到其目录下,然后执行命令:

swift build -c release

生成二进制产物,你可以在 build 目录下找到它。

image.png

现在我们得到了编译好的二进制宏。

引入宏

在其他项目中,在 Build Settings 中添加新的 Other Swift Flags : -load-plugin-executable [path]#[modulename],其中[path]是宏的二进制文件的路径,[modulename]是宏所在的模块名。

image.png

接下来声明宏的接口,然后使用即可:

image.png

image.png

注意:你需要在每一个使用宏的target中添加 Other Swift Flags,不过接口的声明只需在一个target中声明一次,然后其他 target 依赖这个 target即可。

可见不需要在项目中引入 swift-syntax 的依赖,如果项目使用cocoapods来管理,可以将宏的二进制文件和接口声明单独放到一个pod库中,所有依赖宏的库,在其podspec中定义好 Other Swift Flags 即可。