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

Rust引入egui_glfw_gl依赖后glfw-sys编译失败问题

问题描述

在Rust环境做OpenGL开发时,为实现参数实时调整的交互功能,计划集成egui库,选用依赖为egui_glfw_gl 0.13.1。把该依赖加入Cargo.toml后项目无法构建,执行cargo run触发glfw-sys编译错误,未加该依赖前项目可正常编译运行,已有可正常工作的3D场景。

报错输出

PS opengl_t_2> cargo run
   Compiling glfw-sys v3.3.5
error: failed to run custom build command for `glfw-sys v3.3.5`

Caused by:
  process didn't exit successfully: `opengl_t_2\target\debug\build\glfw-sys-d98b92fc73a7f019\build-script-build` (exit code: 101)
  --- stdout
  CMAKE_TOOLCHAIN_FILE_x86_64-pc-windows-msvc = None
  CMAKE_TOOLCHAIN_FILE_x86_64_pc_windows_msvc = None
  HOST_CMAKE_TOOLCHAIN_FILE = None
  CMAKE_TOOLCHAIN_FILE = None
  CMAKE_GENERATOR_x86_64-pc-windows-msvc = None
  CMAKE_GENERATOR_x86_64_pc_windows_msvc = None
  HOST_CMAKE_GENERATOR = None
  CMAKE_GENERATOR = None
  CMAKE_PREFIX_PATH_x86_64-pc-windows-msvc = None
  CMAKE_PREFIX_PATH_x86_64_pc_windows_msvc = None
  HOST_CMAKE_PREFIX_PATH = None
  CMAKE_PREFIX_PATH = None
  CMAKE_x86_64-pc-windows-msvc = None
  CMAKE_x86_64_pc_windows_msvc = None
  HOST_CMAKE = None
  CMAKE = Some("C:\\Program Files\\CMake\\bin\\")
  running: "C:\\Program Files\\CMake\\bin\\" "C:\\Users\\Vasily\\.cargo\\registry\\src\\github.com-1ecc6299db9ec823\\glfw-sys-3.3.5\\." "-G" "Visual Studio 16 2019" "-Thost=x64" "-Ax64" "-DGLFW_BUILD_EXAMPLES=OFF" "-DGLFW_BUILD_TESTS=OFF" "-DGLFW_BUILD_DOCS=OFF" "-DCMAKE_INSTALL_LIBDIR=lib" "-DCMAKE_INSTALL_PREFIX=opengl_t_2\\target\\debug\\build\\glfw-sys-52652cf8f267b532\\out" "-DCMAKE_C_FLAGS= -nologo -MD -Brepro" "-DCMAKE_C_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS= -nologo -MD -Brepro" "-DCMAKE_CXX_FLAGS_DEBUG= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS= -nologo -MD -Brepro" "-DCMAKE_ASM_FLAGS_DEBUG= -nologo -MD -Brepro" 
"-DCMAKE_BUILD_TYPE=Debug"

  --- stderr
  thread 'main' panicked at '
  failed to execute command: program path has no file name

原有依赖配置

[dependencies]
cgmath = "0.16.1"
gl = "0.10.0"
image = "0.19.0"
tobj = "0.1.6"
num = "0.2.0"
rand = "0.5.5"
egui = "0.17.0"
egui_glfw_gl = "0.13.1"

[dependencies.glfw]
git = "https://github.com/bjz/glfw-rs.git"
default-features = false

解决方法

根因

报错直接原因是系统环境变量里的CMAKE路径配置错误:当前配置的路径是C:\Program Files\CMake\bin\,只写到了bin目录,没有指定具体的可执行文件cmake.exe,glfw-sys构建脚本直接调用这个路径时,识别不到有效程序名,直接panic。
之前没加egui依赖时能正常编译,是因为之前的构建缓存没有触发对应版本glfw-sys的CMake完整调用流程,新增依赖后cargo拉取了匹配版本的glfw-sys重新编译,才把这个隐藏的环境配置问题暴露出来。

操作步骤

  • 修复CMAKE路径配置
    • 打开Windows系统环境变量编辑面板,找到用户变量或系统变量中的CMAKE条目,将变量值修改为C:\Program Files\CMake\bin\cmake.exe,保存后关闭所有已打开的终端窗口,重新打开终端让配置生效。
    • 如果不想修改全局环境变量,可以在当前编译用的终端里临时指定路径,执行命令:
      $env:CMAKE="C:\Program Files\CMake\bin\cmake.exe"
      
  • 清理旧构建缓存,在项目根目录执行:
    cargo clean
    
  • 重新执行编译运行命令:
    cargo run
    

如果完成上述操作后出现glfw版本相关的链接错误,是因为当前用的glfw是git拉取的开发分支,和egui_glfw_gl 0.13.1依赖的glfw正式版存在版本不兼容问题,把Cargo.toml里原来的git源glfw配置删掉,替换成crates.io正式版即可:

glfw = { version = "0.46.0", default-features = false }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:39:17