You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows 10环境下按官方README构建Kismet Debugger(UE4SS工具)时的CMake与Rust工具链错误排查求助

Windows 10环境下按官方README构建Kismet Debugger(UE4SS工具)时的CMake与Rust工具链错误排查求助

大家好,我最近在跟着Kismet Debugger的官方README文档,为UE4SS工具构建这个调试器,但在Windows10系统上遇到了一堆卡壳的问题,折腾了好几天没搞定,来求助大家帮忙看看哪里出问题了。

环境基本信息

  • 系统:Windows 10
  • 构建终端:VS2022的x64 Native Build Tools Command Prompt
  • Rust环境:已安装最新Stable版本,rustup show可查看到的可用工具链包括:
    • stable-x86_64-pc-windows-gnu
    • stable-x86_64-pc-windows-msvc
    • 1.46-x86_64-pc-windows-msvc

第一个卡壳点:CMake无法识别Rust工具链

克隆仓库的过程很顺利,但当我严格按照README里的命令,用Ninja生成项目时:

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release

直接弹出了CMake错误,完整报错日志如下:

CMake Error at build/_deps/corrosion-src/cmake/FindRust.cmake:23 (message):
  Could not find toolchain ''

  Available toolchains:

    `stable-x86_64-pc-windows-gnu`
    `stable-x86_64-pc-windows-msvc`
    `1.46-x86_64-pc-windows-msvc`

Call Stack (most recent call first):
  build/_deps/corrosion-src/cmake/FindRust.cmake:461 (_findrust_failed)
  build/_deps/corrosion-src/cmake/Corrosion.cmake:34 (find_package)
  build/_deps/corrosion-src/CMakeLists.txt:33 (include)

我就很纳闷,明明已经装了最新的Stable Rust,工具链也都在,为什么CMake会找不到呢?


强行推进后遇到的新错误

不死心的我尝试了一些自救操作:

  1. 把默认Rust工具链切换到Nightly,再重新安装了Stable版本
  2. 手动指定Rust编译器和Cargo路径,用了这条命令:
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DRust_COMPILER="C:\Users\John\.cargo\bin\rustc.exe" -DRust_CARGO="C:\Users\John\.cargo\bin\cargo.exe" -DRust_TOOLCHAIN="stable-x86_64-pc-windows-msvc" -DRust_CARGO_TARGET_LINK_NATIVE_LIBS="kernel32;ntdll;userenv;ws2_32;dbghelp;msvcrt"

这条命令顺便解决了另一个“Ninja找不到/library "/default:msvcrt"”的错误,但紧接着又爆了一堆新错误,其中最关键的一个是:

C:\Users\John\Kismet\kismet-debugger\RE-UE4SS\deps\first\Unreal\include\Unreal/Core/Misc/Build.hpp(45): fatal error C1189: #error:  Exactly one of [UE_BUILD_DEBUG UE_BUILD_DEVELOPMENT UE_BUILD_TEST UE_BUILD_SHIPPING] should be defined to be 1

这个错误看起来像是Unreal的预处理器定义没配对?但README里完全没提需要手动设置这些啊。


奇怪的对比:单独作为UE4SS Mod能编译成功

我后来试着只把Kismet Debugger的核心源码(dllmain.cpp、KismetDebugger.cpp、KismetDebugger.hpp)拷贝出来,按照UE4SS官方的C++ Mod创建指南,新建了一个Mod项目,居然一次性编译成功了!

这就让我更困惑了:既然作为普通Mod能正常编译,为什么项目官方README里要推荐用CMake+Ninja的命令行方式构建?是不是我哪里的环境配置或者步骤漏了?


我的核心疑问

  1. 最开始的Rust工具链找不到的问题,到底是CMake配置的问题,还是我Rust环境的问题?怎么才能让CMake正确识别到已安装的Rust工具链?
  2. 后来出现的Unreal预处理器定义错误,是不是因为CMake构建时没有自动注入Unreal的编译宏?有没有办法在CMake命令里手动补全这些宏定义?
  3. 为什么官方推荐的构建方式和普通UE4SS Mod的构建方式差异这么大?我是不是误解了README里的步骤?

麻烦各位大佬帮忙分析一下,感谢感谢!

火山引擎 最新活动