首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >moltenvk项目makefile-如何通过clang链接

moltenvk项目makefile-如何通过clang链接
EN

Stack Overflow用户
提问于 2019-06-22 17:21:44
回答 1查看 364关注 0票数 2

这个文件:MoltenVK运行时用户指南提供了一个很好的描述,说明如何将MoltenVK链接到XCode中使用它的项目。

我更喜欢使用makefile,因为它不需要启动XCode来构建(+是一个在Linux上使用相同项目的一致工作流)。

问题是,在说明中有相当多的OSX/XCode特定术语,我不太清楚它如何通过命令行运行clang

如果您假设我只希望使用MoltenVK指定的最小值进行链接,那么这样的命令行参数会是什么样的呢?

以下是我最起码的尝试:

代码语言:javascript
复制
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.dyliba.out文件与LD_RUNPATH_SEARCH_PATHS保持一致。

第7步是否安全可以忽略,因为我没有使用XCode?

EN

回答 1

Stack Overflow用户

发布于 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所需的全部内容是:

代码语言:javascript
复制
export VK_ICD_FILENAMES=lib/MoltenVK_icd.json 
main:
    g++ test.cpp -o App -Llib -rpath lib -lMoltenVK

我不是最佳实践和惯例方面的专家,我做的都是有用的。希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56717600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档