必须勾选“使用 C++ 的桌面开发”工作负载,否则 cl.exe 不在路径中,导致编译失败;还需选 Windows SDK、CMake 工具(预览版)等组件,并通过开发者命令行验证 cl.exe。

Visual Studio 安装时必须勾选的 C++ 组件
不装对组件,cl.exe 就不会出现在系统路径里,所有命令行编译、CMake 配置、IDE 新建项目都会失败——不是报错“找不到编译器”,就是新建 C++ 项目时灰掉不能选。
安装时在「工作负载」页,务必勾选:使用 C++ 的桌面开发。别只点「.NET 桌面开发」或「通用 Windows 平台开发」,它们默认不含 C++ 编译工具链。
-
Windows 10/11 SDK:至少选一个(推荐最新版,如10.0.22621.0),否则#include <windows.h>会找不到头文件 -
CMake 工具(预览版):如果要用 VS 自带的 CMake 集成(比如打开CMakeLists.txt直接构建),这个要手动勾选,它不在主工作负载里 -
Git for Windows:非必须,但没装的话,VS 新建项目时「初始化 Git 存储库」选项会失效
安装后验证 cl.exe 是否就位
很多人装完以为好了,结果终端敲 cl 报 “不是内部或外部命令”——根本原因是没进开发人员命令行环境,或者 PATH 没自动更新。
别直接用普通 PowerShell 或 CMD 测试,必须用 Visual Studio 提供的专用终端:
立即学习“C++免费学习笔记(深入)”;
- 开始菜单搜
Developer Command Prompt for VS 2022(版本号按你装的来) - 在里面运行
cl,应输出版本信息和用法;运行where cl应返回类似C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\Hostx64\x64\cl.exe - 如果
where cl找不到,说明安装时漏了组件,或安装中途被杀毒软件拦截过(常见于某些国产安全软件静默阻止 VC 运行时注册)
CMake 配置时识别不到 MSVC 工具集
用 VS Code + CMake Tools 插件,或 CLion、Qt Creator 等外部 IDE 时,常卡在 “No CMAKE_CXX_COMPILER could be found”。这不是 CMake 问题,是它没找到 cl.exe 对应的工具集描述文件。
根本原因:这些 IDE 默认不加载 VS 的环境变量,得显式指定工具链:
- 在 CMake 配置中设
-G "Visual Studio 17 2022"(对应 VS 2022)或-G "Ninja" -DCMAKE_GENERATOR_TOOLSET=host=x64(用 Ninja 时需指定 toolset) - 不要依赖
cmake ..自动探测——Windows 上它优先找 MinGW 或 GCC,除非你删掉所有其他编译器 PATH - 若用
vswhere.exe查找安装路径(比如 CI 脚本),注意它返回的是实例 ID,真正要拼的是VC\Tools\MSVC\<version>\bin\Hostx64\x64这段路径,<version>不是 VS 版本号,而是独立的 MSVC 工具集版本(如14.38.33130)
多版本 VS 共存时 cl.exe 调用混乱
机器上同时装了 VS 2019 和 VS 2022,命令行里 cl 突然变成旧版本,或者 CMake 生成的项目用错 SDK——这通常是因为环境变量 VCINSTALLDIR 或 PATH 里残留了旧路径。
VS 的开发者命令行会重置这些变量,但普通终端不会。临时解决办法:
- 每次手动运行对应版本的
vcvarsall.bat,例如:"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 - 避免把
cl.exe所在目录硬加进系统 PATH——不同版本的cl.exe不兼容,混用会导致链接错误(如LNK2038: mismatch detected for 'RuntimeLibrary') - 检查
Microsoft.VCToolsVersion.default.props文件(在MSBuild\Microsoft\VC\v170\下),它控制项目默认工具集,手动改容易引发构建不一致
最稳的方式是:始终通过 VS 自带的开发者命令行启动终端,或者用 vsdevcmd.bat 初始化环境。其它方式省事一时,后面 debug 花的时间翻倍。











