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::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)