FindVulkan¶
3.7 版本中新增。
查找 Vulkan,一个低开销、跨平台的 3D 图形和计算 API,以及通常由 Vulkan SDK 提供的相关开发工具。这包括常用的实用工具,如着色器编译器和 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 开发通常需要 Vulkan SDK 中包含的版本,因为它已启用 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_LIBRARYVulkan 库的路径。
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 根目录位置。它通常通过将 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)