You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake查找GLSLang库报错:缺失SPIRV-Tools-opt目标如何解决?

问题:CMake查找GLSLang库时缺失SPIRV-Tools-opt目标

我近期下载并编译了GLSLang库用于项目开发,但使用find_package(glslang REQUIRED)查找该库时,出现缺失SPIRV-Tools-opt目标的错误。我查看了glslang-targets.cmake文件,发现部分目标的INTERFACE_INCLUDE_DIRECTORIES被设置为不存在的install/include/External路径,但我认为这与缺失SPIRV-Tools-opt目标无关。我还尝试使用find_package(SPIRV-Tools-opt REQUIRED)进行查找,同样未能成功。请问如何通过CMake正确查找并引入GLSLang库?我是否遗漏了某些步骤或操作有误?

错误信息

GLSLang查找错误

[cmake] CMake Error at MyProject/CMakeLists.txt:183 (find_package):
[cmake]   Found package configuration file:
[cmake] 
[cmake]     Path to glslang-config.cmake
[cmake] 
[cmake]   but it set glslang_FOUND to FALSE so package "glslang" is considered to be
[cmake]   NOT FOUND.  Reason given by package:
[cmake] 
[cmake]   The following imported targets are referenced, but are missing:
[cmake]   SPIRV-Tools-opt

SPIRV-Tools-opt查找错误

[cmake]   By not providing "FindSPIRV-Tools.cmake" in CMAKE_MODULE_PATH this project
[cmake]   has asked CMake to find a package configuration file provided by
[cmake]   "SPIRV-Tools", but CMake did not find one. //For some reason it says SPIRV-Tools and not SPIRV-Tools-opt.

解决方案

1. 确认编译GLSLang时的组件配置

GLSLang默认编译可能不会包含所有SPIRV-Tools组件,编译时需明确开启对应CMake选项:

  • 编译时添加-DENABLE_SPIRV_TOOLS=ON和-DENABLE_SPIRV_TOOLS_OPT=ON参数,确保SPIRV-Tools-opt被编译并安装。
  • 若使用KhronosGroup的官方仓库,需确保依赖子模块拉取完整:
    克隆时加--recursive参数:
    git clone --recursive https://github.com/KhronosGroup/glslang.git
    
    已克隆的仓库执行:
    git submodule update --init --recursive
    

2. 配置CMake路径识别

  • 确保GLSLang和SPIRV-Tools安装到CMake可识别的路径,或在find_package前指定前缀路径:
    set(CMAKE_PREFIX_PATH "/path/to/glslang/install;/path/to/spirv-tools/install" ${CMAKE_PREFIX_PATH})
    find_package(glslang REQUIRED)
    
    本地编译未安装到系统路径时,必须明确指定前缀路径,否则CMake无法找到配置文件。

3. 修复glslang-targets.cmake的路径问题(可选)

虽然你认为路径问题与目标缺失无关,但错误的INCLUDE路径可能引发隐性配置错误:

  • 将install/include/External替换为实际的SPIRV-Tools头文件路径。
  • 或编译GLSLang时通过-DCMAKE_INSTALL_PREFIX指定正确安装路径,避免生成错误路径配置。

4. 手动指定SPIRV-Tools-opt目标(备选)

若find_package(glslang)始终失败,可尝试单独配置SPIRV-Tools-opt:

add_library(SPIRV-Tools-opt STATIC IMPORTED)
set_target_properties(SPIRV-Tools-opt PROPERTIES
    IMPORTED_LOCATION "/path/to/spirv-tools/install/lib/libSPIRV-Tools-opt.a" # 替换为对应平台的库文件
    INTERFACE_INCLUDE_DIRECTORIES "/path/to/spirv-tools/install/include"
)

内容的提问来源于stack exchange,提问作者xarxarx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 11:48:35