使用Ninja Generator时CMake无法通过C编译器测试报错求助
问题根因
该错误是CMake调用Ninja构建测试程序时,无法找到Windows SDK提供的*资源编译器(rc.exe)和清单工具(mt.exe)*导致的,具体触发原因分为两类:
- Visual Studio 2019安装不完整,缺少对应版本的Windows SDK组件
- 运行CMake的终端未加载VS开发者命令行环境,工具路径未加入系统PATH,CMake识别不到rc、mt工具,所以出现
CMAKE_MT-NOTFOUND和「系统找不到指定文件」的报错。
解决方案
- 检查VS安装完整性:打开VS2019 Installer,进入「修改」界面,确认「使用C++的桌面开发」工作负载已勾选,且该工作负载下的对应版本Windows 10/11 SDK已安装,缺失则补装后重启设备。
- 使用VS专属终端执行构建:在开始菜单找到「Visual Studio 2019」目录,打开「x64 Native Tools Command Prompt for VS 2019」终端,再执行CMake生成、构建命令,该终端会自动配置好所有MSVC工具链的环境变量。
- 手动配置环境变量(可选):如果需要在普通终端执行构建,将
C:\Program Files (x86)\Windows Kits\10\bin\<你的SDK版本号>\x64路径加入系统环境变量PATH,替换<你的SDK版本号>为你本地安装的Windows SDK版本(可在上述路径下查看已安装的版本目录,需保证该目录下存在rc.exe和mt.exe文件)。 - 清除缓存重新生成:执行上述操作后,先删除旧的构建目录(也就是你报错中的
C:/Users/jamieza/source/repos/CMakeProject2/out/build/x64-Debug文件夹),再重新运行CMake生成命令,避免旧缓存干扰配置。 - 如果你是在VS IDE内直接打开CMake项目触发报错:打开项目的CMake设置页,确认「Windows SDK版本」和「工具集」已经手动选择为已安装的对应版本,不要使用默认的未指定配置。
内容的提问来源于stack exchange,提问作者Zachary Jamieson
相关产品推荐
相关产品推荐

