Windows环境下CMake提示C/C++编译器未识别问题求助
刚接触CMake就碰到这个报错确实挺闹心的,结合你已经安装了Visual Studio 2015/2017和Windows 8.1 SDK的情况,给你几个针对性的解决思路:
用VS开发者命令提示符运行CMake
普通命令行窗口可能没加载Visual Studio的编译器环境变量,导致CMake找不到cl.exe。你可以打开对应版本的VS开发者命令提示符(比如“Visual Studio 2017 x64 开发者命令提示符”),切换到项目目录后再执行CMake命令,这样CMake能自动识别到VS的编译器工具链。检查VS是否安装了C/C++开发组件
虽然你装了VS,但默认安装可能没勾选C相关工作负载。打开VS的安装程序,找到对应的VS版本,确认勾选了**“使用C的桌面开发”**组件——这个组件包含了CMake需要的C/C++编译器、链接器等核心工具。手动指定编译器路径(备选方案)
如果自动识别失败,可以在CMake命令里手动指定C和C++编译器的路径,示例命令如下(根据你的VS安装路径调整):cmake -G "Visual Studio 15 2017 Win64" ^ -DCMAKE_C_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe" ^ -DCMAKE_CXX_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe" ^ ..要是用的是VS2015,路径大概是
C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/x64/cl.exe。强制指定Windows SDK版本
CMake自动选择了Windows 10.0.15063 SDK,但你装的是Win8.1 SDK,可以尝试强制指定SDK版本:- 命令行添加参数:
-DCMAKE_SYSTEM_VERSION=8.1 - 或者在CMakeLists.txt开头添加:
set(CMAKE_SYSTEM_VERSION 8.1)
- 命令行添加参数:
先试试前两个方法,这两个解决了大部分类似的问题,如果还是不行再尝试后面的方案。
内容的提问来源于stack exchange,提问作者Vignes




