blendvk项目makefile-如何通过clang链接

时间:2019-06-22 17:21:44

标签: xcode macos clang metal vulkan

此文件: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步是否可以忽略?

1 个答案:

答案 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

我不是最佳做法和惯例方面的专家,我会尽力而为。希望这对您有帮助