FindVulkan

3.7 版本中新增。

查找 Vulkan,一个低开销、跨平台的 3D 图形和计算 API,以及通常由 Vulkan SDK 提供的相关开发工具。这包括常用的实用工具,如着色器编译器和 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 开发通常需要 Vulkan SDK 中包含的版本,因为它已启用 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 根目录位置。它通常通过将 Vulkan SDK 目录的顶级 setup-env.sh 脚本导入 shell 环境来设置。

示例

查找 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)