此文件:MoltenVK Runtime User Guide提供了有关如何在XCode中将MoltenVK链接到使用它的项目的很好的描述。
我更喜欢使用makefiles,因为它消除了启动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
样式的变量,该变量已嵌入可执行文件中,并带有查找MoltenVK.dylib
文件的位置列表?
在用户指南的第4步中,它说“ 拖动(MoltenVK / macOS / dynamic / libMoltenVK.dylib)到“使用库链接二进制文件”列表”-实际上就是{{1} }行?
第5步进入哪里?我应该附加-lMoltenVK
吗? -framework Metal -framework Foundation -framework ...
文件应该怎么办?
步骤6是否只是确保我相对于.tbd
的{{1}}复制libMoltenVK.dylib
文件?
因为我没有使用XCode,第7步是否可以忽略?
答案 0 :(得分:0)
TLDR;我使用g ++,使用标志-lMoltenVK
和-L$(MOLTENVK_DIR)
,并在顶部使用VK_ICD_FILENAMES
export VK_ICD_FILENAMES=$(ICD_DIR)
标题搜索路径为-I$(PATH)
库搜索路径为-L$(PATH)
运行路径搜索路径为-rpath $(PATH)
(带空格)
我所做的是将.dylibs复制到项目文件夹中的文件夹lib
中,将库搜索路径设置为-Llib
,并将它们链接到-lvulkan
和{{1} }。由于这些动态库在链接时被硬连接为使用@rpath,因此我设置了-lMoltenVK
。
您可以看到vulkan tutorial for linux which uses a Makefile,其中显示了在Linux上为Vulkan制作Makefile的非常基本的版本(没有MoltenVK)
最重要的是,要在调用vkCreateInstance时未获得VkResult -9(未正确安装MoltenVK),请确保定义-rpath lib
环境变量!我是通过编写{{1 }}到我的Makefile顶部附近,并将VK_ICD_FILENAMES
文件复制到我的项目中!。该文件指向dylib所在的位置,并且是MoltenVK工作的必要条件。安装MoltenVK时,它与libMoltenVK.dylib位于同一文件夹中
您必须定义export VK_ICD_FILENAMES=lib/MoltenVK_icd.json
才能使验证层正常工作。
最少,您需要的MoltenVK是:
MoltenVK_icd.json
我不是最佳做法和惯例方面的专家,我会尽力而为。希望这对您有帮助