如何将.metal和.swift合并到同一个包中



我创建了一个MacOS命令行应用程序,它定义并成功调用了Metal内核。我现在正试图将这个应用程序的。metal和。swift逻辑移动到自己的包中,以便可以在其他项目中使用。我希望我能够创建一个Swift包,添加我的。metal和。Swift逻辑,并构建/测试它没有问题,但事实并非如此。

在Xcode中我创建了一个新包(File-> new -> package)。包创建后,我尝试添加一个Metal文件(右键单击sources ->新文件)。我打开窗口中的macOS选项卡,试图找到.metal模板文件,但没有结果。然后我只是尝试复制/粘贴我的。metal文件到源,这工作,但当我去构建我得到一个错误
CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler  (in target '...' from project '...')
...
swiftc -incremental -module-name ...
...
Command CompileSwiftSources failed with a nonzero exit code

我如何添加和构建。metal文件作为我的Xcode Swift包的一部分?我似乎找不到我错过的东西。我在GitHub上找到了一些结合了Metal和Swift的包的例子,我设法让这个(Metal insources/other)在Xcode中在我的计算机上编译。

你更新你的Swift包文件了吗?

.metallib只有当你在包清单中指定了你的资源后,file (Bundle.module)才可用。

Package.swift:

.target(
name: "TargetName",
dependencies: [],
resources: [.process("ThePathToYour/Shader.metal")]
)

最新更新