这个文件:MoltenVK运行时用户指南提供了一个很好的描述,说明如何将MoltenVK链接到XCode中使用它的项目。
我更喜欢使用makefile,因为它不需要启动XCode来构建(+是一个在Linux上使用相同项目的一致工作流)。
问题是,在说明中有相当多的OSX/XCode特定术语,我不太清楚它如何通过命令行运行clang。
如果您假设我只希望使用MoltenVK指定的最小值进行链接,那么这样的命令行参数会是什么样的呢?
以下是我最起码的尝试:
MOLTENVKDIR = /blah/vulkansdk-macos-1.1.108.0
a.out: my_headers.h my_src_files.cpp
clang -I$(MOLTENVKDIR)/MoltenVK/include -L$(MOLTENVKDIR)/MoltenVK/macOS/dynamic -lMoltenVK my_src_files.cpp更具体的问题:
我应该如何设置LD_RUNPATH_SEARCH_PATHS?我假设这是一个PATH-style变量,它嵌入到可执行文件中,其中包含了查找MoltenVK.dylib文件的位置列表?
在用户指南的步骤4中,它说“拖(MoltenVK/macOS/dynamic/libMoltenVK.dylib)到Libraries列表”--这实际上是-lMoltenVK行吗?
第五步从哪里进来?我应该附加-framework Metal -framework Foundation -framework ...吗?我应该如何处理.tbd文件?
步骤6只是确保我复制相对于libMoltenVK.dylib的a.out文件与LD_RUNPATH_SEARCH_PATHS保持一致。
第7步是否安全可以忽略,因为我没有使用XCode?
发布于 2020-11-18 22:49:45
我使用g++,使用标志-lMoltenVK和-L$(MOLTENVK_DIR),在顶部使用export VK_ICD_FILENAMES=$(ICD_DIR)定义VK_ICD_FILENAMES
头搜索路径是-I$(PATH)库搜索路径是-L$(PATH)运行路径搜索路径是-rpath $(PATH) (带空格)
我所做的是将.dylibs复制到项目文件夹中的一个名为lib的文件夹中,用-Llib设置库搜索路径,并将它们与-lvulkan和-lMoltenVK链接。由于这些动态库是在链接时硬连接使用@rpath的,所以我设置了-rpath lib。
您可以看到vulkan linux教程,它使用Makefile,它显示了在linux上为Vulkan生成Makefile的一个非常基本的版本(没有MoltenVK)。
最重要的是,要在调用VK_ICD_FILENAMES -9 (未正确安装MoltenVK )时不获取VkResult -9,请确保定义环境变量!是通过在Makefile顶部编写export VK_ICD_FILENAMES=lib/MoltenVK_icd.json来实现的,将export VK_ICD_FILENAMES=lib/MoltenVK_icd.json文件复制到我的项目中!是一个指向dylib所在位置的文件,也是MoltenVK工作的必要条件。安装MoltenVK时,它与libMoltenVK.dylib位于同一个文件夹中。
类似地,您必须为验证层的工作定义VK_LAYER_PATH。最低限度,MoltenVK所需的全部内容是:
export VK_ICD_FILENAMES=lib/MoltenVK_icd.json
main:
g++ test.cpp -o App -Llib -rpath lib -lMoltenVK我不是最佳实践和惯例方面的专家,我做的都是有用的。希望这能帮上忙
https://stackoverflow.com/questions/56717600
复制相似问题