FindVulkan¶
3.7 版本中新增。
查找 Vulkan(一种低开销、跨平台的 3D 图形和计算 API)以及通常由 Vulkan SDK 提供的相关开发工具。
find_package(Vulkan [<version>] [COMPONENTS <components>...] [...])
Vulkan 包括常用的实用工具,例如着色器编译器和 SPIR-V 工具(例如 DXC、glslc、glslang 等),它们支持基于 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::glslc3.19 版本新增。
导入的可执行目标,封装了 GLSLC SPIR-V 编译器的使用要求,如果找到
glslc则可用。Vulkan::Headers3.21 版本新增。
封装包含 Vulkan 头文件所需的使用要求的目标。它仅提供包含目录,不链接任何库。这对于在运行时动态加载 Vulkan 库的应用程序很有用。如果找到 Vulkan,则此目标可用。
Vulkan::glslangValidator3.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_EXECUTABLE3.19 版本新增。
GLSL SPIR-V 编译器的路径。
Vulkan_GLSLANG_VALIDATOR_EXECUTABLE3.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)