XCode 13 beta 无法加载 Metal CoreImage 内核

XCode 13 beta unable to load Metal CoreImage Kernel

这看起来是一个奇怪的 XCode 13 beta 错误(包括 beta 5)。 Metal Core Image 内核无法从库中加载并给出错误

2021-08-26 12:05:23.806226+0400 MetalFilter[23183:1751438] [api] +[CIKernel kernelWithFunctionName:fromMetalLibraryData:options:error:] Cannot initialize kernel with given library data.

[ERROR] Failed to create CIColorKernel: Error Domain=CIKernel Code=6 "(null)" UserInfo={CINonLocalizedDescriptionKey=Cannot initialize kernel with given library data.}

它在 XCode 12.5 上加载和运行完美无缺。也许 XCode 13 中缺少某些设置,或者它是 XCode 13 beta 5 中的错误?

这是可以重现错误的示例代码。

MetalCoreImageFilter sample code

WWDC2020 中建议的目标构建规则中提到了以下脚本。

当您从第二个脚本中删除 -I $MTL_HEADER_SEARCH_PATHS 部分时它应该可以工作。

虽然在WWDC视频中有提到,但实际上在MTL_HEADER_SEARCH_PATHS为空时会出问题。请参阅论坛中的 this answer。通常,如果您没有复杂的文件图或外部依赖项,则不需要该参数。