gpt4 book ai didi

cmake - 使用 CMake 构建 metallib

转载 作者:行者123 更新时间:2023-12-04 14:22:50 34 4
gpt4 key购买 nike

我有一些.metal 文件,我想将它编译成.metallib。整个构建系统都在使用 CMake,我也将使用它来编译 .metal

要构建 .metallib,我必须使用接下来的两个命令:

xcrun -sdk macosx metal -c MyLibrary.metal -o MyLibrary.air
xcrun -sdk macosx metallib MyLibrary.air -o MyLibrary.metallib

有没有什么方便的方法可以使用 CMake 来设置编译器,CMake 会自动完成所有操作?或者我应该使用 add_custom_command 并手动调用 xcrun

最佳答案

TL;DR 使用自定义命令/目标和添加新语言这两种方法都是有效的。选择似乎取决于可重用性、分发范围、目标用户等之间的权衡。就个人而言,我最初会选择前者。


话虽如此,如果您选择 add_custom_command/add_custom_target方法,它可以让你走得很远。只需确保您提供实际目标并将它们与自定义命令的 OUTPUT 链接,以便能够设置适当的依赖项并避免在依赖项仍然是最新的情况下不必要地重新执行目标.例如,

set(FOO_FILE "foo.txt")

add_custom_command(OUTPUT ${FOO_FILE}
COMMAND ${CMAKE_COMMAND} -E touch ${FOO_FILE}
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Creating ${FOO_FILE}"
VERBATIM)

add_custom_target(foo DEPENDS ${FOO_FILE})

添加新语言的方法有点复杂,因为它的目标是更通用,并将语言支持作为 CMake 功能提供(即不依赖于特定项目)。为此,您需要定义语言的各个方面,例如编译器和用于处理源文件的规则。除此之外,特征检测和测试通常也属于这里。有关更详细的文档,请查看 here .

但是,研究 CMake 支持的实际语言可能会有所帮助。我建议在 CMake 的 Modules 目录下查看 CUDA(这会引导您查看 CompilerPlatform 子目录).

注意:通过邮件列表挖掘,我碰到了这个 thread ,其中提到第二种方法可能不适用于非基于 Makefile 的生成器。从线程(或现有文档)中不清楚,我不能尝试它,因为我没有通过这样的工具(例如 MSVC 或 Xcode)使用 CMake。

关于cmake - 使用 CMake 构建 metallib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52008408/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com