FindVulkan

3.7 版本中新增。

查找 Vulkan(一种低开销、跨平台的 3D 图形和计算 API)以及通常由 Vulkan SDK 提供的相关开发工具。

find_package(Vulkan [<version>] [COMPONENTS <components>...] [...])

Vulkan 包括常用的实用工具,例如着色器编译器和 SPIR-V 工具(例如 DXC、glslcglslang 等),它们支持基于 Vulkan 的开发工作流。

组件

在 3.24 版本中添加。

此模块支持使用 find_package() 命令指定的几个可选组件。

find_package(Vulkan [COMPONENTS <components>...])

每个组件都提供一个相应的导入目标。支持的组件包括:

glslc

在 3.24 版本中添加。

查找 SPIR-V 编译器。为了向后兼容,即使未显式请求,此可选组件也始终自动隐含。

glslangValidator

在 3.24 版本中添加。

查找用于将 GLSL 和 HLSL 着色器编译为 SPIR-V 的 glslangValidator 工具。为了向后兼容,即使未显式请求,此可选组件也始终自动隐含。

glslang

在 3.24 版本中添加。

查找 Khronos 参考前端着色器解析器和 SPIR-V 代码生成库(glslang)。

shaderc_combined

在 3.24 版本中添加。

查找用于 Vulkan 着色器编译的 Google 静态库。

SPIRV-Tools

在 3.24 版本中添加。

查找用于分析和转换 SPIR-V 模块的 Khronos 库。

MoltenVK

在 3.24 版本中添加。

查找 Khronos MoltenVK 库,该库在 macOS 上可用,并通过 Apple Metal 图形框架实现了 Vulkan API 的一个子集。

dxc

在 3.25 版本中新增。

查找 DirectX 着色器编译器 (DXC),包括库和命令行工具。请注意,Visual Studio 也提供了 DXC 工具,但通常需要 Vulkan SDK 中包含的版本来进行 Vulkan 开发,因为它启用了 Vulkan 功能。

volk

在 3.25 版本中新增。

查找 Vulkan 元加载器 volk 库,这是一个向量化优化的内核库。

导入的目标

此模块提供以下 导入目标

Vulkan::Vulkan

封装主要 Vulkan 库使用要求的目标,如果找到 Vulkan 则可用。

Vulkan::glslc

3.19 版本新增。

导入的可执行目标,封装了 GLSLC SPIR-V 编译器的使用要求,如果找到 glslc 则可用。

Vulkan::Headers

3.21 版本新增。

封装包含 Vulkan 头文件所需的使用要求的目标。它仅提供包含目录,不链接任何库。这对于在运行时动态加载 Vulkan 库的应用程序很有用。如果找到 Vulkan,则此目标可用。

Vulkan::glslangValidator

3.21 版本新增。

导入的可执行目标,封装了 glslangValidator 的使用要求,如果找到此工具则可用。

Vulkan::glslang

在 3.24 版本中添加。

封装 glslang 库使用要求的目标,如果在 SDK 中找到 glslang 则可用。

Vulkan::shaderc_combined

在 3.24 版本中添加。

封装 shaderc_combined 库使用要求的目标,如果在 SDK 中找到此库则可用。

Vulkan::SPIRV-Tools

在 3.24 版本中添加。

封装 SPIRV-Tools 库使用要求的目标,如果在 SDK 中找到此库则可用。

Vulkan::MoltenVK

在 3.24 版本中添加。

封装 MoltenVK 库使用要求的目标,如果在 SDK 中找到此库则可用。

Vulkan::volk

在 3.25 版本中新增。

封装 volk 库使用要求的目标,如果在 SDK 中找到 volk 则可用。

Vulkan::dxc_lib

在 3.25 版本中新增。

封装 DirectX 着色器编译器库使用要求的目标,如果 SDK 中找到 DXC 库则可用。

Vulkan::dxc_exe

在 3.25 版本中新增。

导入的可执行目标,提供 DirectX 着色器编译器 CLI 工具的使用要求,如果 SDK 拥有此工具则可用。

结果变量

此模块定义了以下变量

Vulkan_FOUND

布尔值,指示是否找到(请求版本)的 Vulkan 和所有必需的组件。

Vulkan_VERSION

在版本 3.23 中添加。

找到的 Vulkan 的版本。值从 vulkan/vulkan_core.h 检索。

Vulkan_INCLUDE_DIRS

使用主要 Vulkan 库所需的包含目录。

Vulkan_LIBRARIES

链接以使用主要 Vulkan 库所需的库。

Vulkan_glslc_FOUND

在 3.24 版本中添加。

布尔值,指示 SDK 是否提供 glslc 可执行文件。

Vulkan_glslangValidator_FOUND

在 3.24 版本中添加。

布尔值,指示 SDK 是否提供 glslangValidator 可执行文件。

Vulkan_glslang_FOUND

在 3.24 版本中添加。

布尔值,指示 SDK 是否提供 glslang 库。

Vulkan_shaderc_combined_FOUND

在 3.24 版本中添加。

布尔值,指示 SDK 是否提供 shaderc_combined 库。

Vulkan_SPIRV-Tools_FOUND

在 3.24 版本中添加。

布尔值,指示 SDK 是否提供 SPIRV-Tools 库。

Vulkan_MoltenVK_FOUND

在 3.24 版本中添加。

布尔值,指示 SDK 是否提供 MoltenVK 库。

Vulkan_volk_FOUND

在 3.25 版本中新增。

布尔值,指示 SDK 是否提供 volk 库。

Vulkan_dxc_lib_FOUND

在 3.25 版本中新增。

布尔值,指示 SDK 是否提供 DirectX 着色器编译器库。

Vulkan_dxc_exe_FOUND

在 3.25 版本中新增。

布尔值,指示 SDK 是否提供 DirectX 着色器编译器 CLI 工具。

缓存变量

以下缓存变量也可以设置

Vulkan_INCLUDE_DIR

包含 Vulkan 头文件的目录。

Vulkan_LIBRARY

链接到 Vulkan 库的路径。

Vulkan_GLSLC_EXECUTABLE

3.19 版本新增。

GLSL SPIR-V 编译器的路径。

Vulkan_GLSLANG_VALIDATOR_EXECUTABLE

3.21 版本新增。

glslangValidator 工具的路径。

Vulkan_glslang_LIBRARY

在 3.24 版本中添加。

glslang 库的路径。

Vulkan_shaderc_combined_LIBRARY

在 3.24 版本中添加。

shaderc_combined 库的路径。

Vulkan_SPIRV-Tools_LIBRARY

在 3.24 版本中添加。

SPIRV-Tools 库的路径。

Vulkan_MoltenVK_LIBRARY

在 3.24 版本中添加。

MoltenVK 库的路径。

Vulkan_volk_LIBRARY

在 3.25 版本中新增。

volk 库的路径。

Vulkan_dxc_LIBRARY

在 3.25 版本中新增。

DirectX 着色器编译器库的路径。

Vulkan_dxc_EXECUTABLE

在 3.25 版本中新增。

DirectX 着色器编译器 CLI 工具的路径。

提示

此模块接受以下变量

VULKAN_SDK

此环境变量可以可选地设置为指定给定体系结构 Vulkan SDK 的根目录位置。它通常是通过在 shell 环境中 source Vulkan SDK 目录的顶级 setup-env.sh 脚本来设置的。

示例

查找 Vulkan 库并将其链接到项目目标

find_package(Vulkan)
target_link_libraries(project_target PRIVATE Vulkan::Vulkan)

查找 Vulkan 库及其他组件

find_package(Vulkan COMPONENTS volk)
target_link_libraries(project_target PRIVATE Vulkan::Vulkan Vulkan::volk)