提问人:JAHelia 提问时间:10/30/2023 最后编辑:Max DesiatovJAHelia 更新时间:11/11/2023 访问量:312
Swift 宏:找不到外部宏实现类型
Swift Macros: external macro implementation type could not be found
问:
我在通过 SwiftPM 安装的项目中使用 MetaCodable 宏,当我尝试使用本地计算机作为运行代理(MBP M1 Max - Sonoma - XCode 15)使用 Microsoft Azure 的管道构建项目时,我收到以下错误消息:
error: external macro implementation type 'CodableMacroPlugin.CodedAt' could not be found for macro 'CodedAt'
这里的一些人建议在构建设置中添加,但这并不能解决问题。-external-plugin-path
other Swift flags
在这个线程中,有些人还建议添加 、 或 或 ,我使用该值尝试了这些选项的每个选项: 但我在每个 CI 构建中都遇到了相同的错误。-load-plugin-library
-plugin-path
-load-plugin-executable
other Swift flags
$(BUILT_PRODUCTS_DIR)#MetaCodable
我还在 Azure 的管道生成日志中收到此警告:
"output": "<unknown>:0: warning: compiler plugin not loaded: '/Users/my_user_name/Library/Developer/Xcode/DerivedData/MyProject/Build/Products/Release/CodableMacroPlugin; failed to initialize /Users/my_user_name/vsts-agent-osx-x64-2.183.1/_work/9/MyProject/Data/Models/SomeModel.swift
对此的任何想法都是值得赞赏的。
答:
我遇到了同样的问题,几个小时后在我这边找到了解决方案。
对于我们的库,除了 iOS 之外,我们必须为 SwiftSyntaxMacros 定义一个 macOS 支持版本。在本地,我们使用 MacOS 14 并将其设置为 14。 在服务器上,我们运行的是 13.X。对于MacOS支持版本,我们没有收到错误,只有“错误:找不到宏'foo'的外部宏实现类型'foo'”。
将其设置为MacOS 12后,问题就消失了:
platforms: [.macOS(.v12), .iOS(.v15)],
我希望这对你有用。在网上,我没有找到这个问题的解决方案。
评论
macOS
.macOS(.v10_15)
评论
xcodebuild
命令在我的机器上运行没有问题:但 Microsoft Azure 的管道仍然失败。我什至尝试将此命令添加为 Microsoft Azure 中的 CI 步骤(终端类型)(替换原始 CI 构建步骤),但由于相同的错误,它没有通过xcodebuild -project /Users/xxxxx/MyProject.xcodeproj -scheme MyScheme -configuration Release -destination 'generic/platform=iOS' build