【问题标题】:moltenvk project makefile- how to link via clang熔体vk项目makefile-如何通过clang链接
【发布时间】:2019-11-05 03:22:48
【问题描述】:

这个文件:MoltenVK Runtime User Guide 很好地描述了如何在 XCode 中将 MoltenVK 链接到使用它的项目。

我更喜欢使用 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 样式的变量,它嵌入在可执行文件中,并带有一个查找 MoltenVK.dylib 文件的位置列表?

在用户指南的第 4 步中,它说“将 (MoltenVK/macOS/dynamic/libMoltenVK.dylib) 拖到 Link Binary With Libraries 列表”- 本质上是 -lMoltenVK 行?

第 5 步从何而来?我应该附加-framework Metal -framework Foundation -framework ... 吗?我应该如何处理.tbd 文件?

第 6 步是否只是确保我复制相对于 a.outlibMoltenVK.dylib 文件与 LD_RUNPATH_SEARCH_PATHS 一致?

第 7 步是否可以忽略,因为我没有使用 XCode?​​p>

【问题讨论】:

    标签: xcode macos clang metal vulkan


    【解决方案1】:

    TLDR;我使用 g++,使用标志 -lMoltenVK-L$(MOLTENVK_DIR),并在顶部使用 export VK_ICD_FILENAMES=$(ICD_DIR) 定义 VK_ICD_FILENAMES

    标题搜索路径是-I$(PATH) 图书馆搜索路径是-L$(PATH) Runpath Search Paths 为-rpath $(PATH)(带空格)

    我所做的是将 .dylibs 复制到我的项目文件夹中名为 lib 的文件夹中,将库搜索路径设置为 -Llib,并将它们与 -lvulkan-lMoltenVK 链接。由于这些动态库在链接时硬连线使用@rpath,因此我设置了-rpath lib

    您可以看到vulkan tutorial for linux which uses a Makefile,它显示了在 linux 上为 Vulkan 制作 Makefile 的一个非常基本的版本(没有 MoltenVK)

    最重要的是,为了在调用 vkCreateInstance(MoltenVK 未正确安装)时不会得到 VkResult -9,请确保定义 VK_ICD_FILENAMES 环境变量!我通过在靠近在我的 Makefile 顶部,并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
    

    我不是最佳实践和惯例方面的专家,我只做行之有效的事情。希望这有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多