按F5无反应或提示“未选择启动项”是因为CMake配置失败:CMakeLists.txt需在根目录、含未被条件屏蔽的add_executable()、project版本≥3.10,修改后须重新加载缓存,且后台索引完成才可运行。

直接按 Ctrl+F5(不调试)或 F5(带调试)就能运行,前提是项目已成功配置且有可执行目标。 Visual Studio 会自动识别 CMakeLists.txt 中的 add_executable() 目标,并在工具栏“启动项”下拉列表中列出。没看到可执行项?不是代码问题,大概率是 CMake 配置卡在了某一步。
为什么按 F5 没反应或报错“未选择启动项”
这不是 IDE 故障,而是 CMake 缓存未生成或目标未被识别:
-
CMakeLists.txt必须位于打开的文件夹根目录(或子文件夹中但需手动启用“CMake 部分激活”,VS 2022 17.1+ 支持) - 文件里至少要有一个
add_executable(...),且不能被if()条件块包裹后实际未进入(比如if(WIN32)但在 Linux 远程配置下不满足) - 如果用了
project(... VERSION ...),版本号必须 ≥ 3.10(VS 内置 CMake 最低要求),低于此值会导致解析失败、无目标生成 - 修改
CMakeLists.txt后未触发自动重配置:可右键点击它 → “重新加载 CMake 项目”,或等状态栏提示“CMake 配置完成”再操作
如何确保“启动项”下拉列表里出现你的可执行文件
VS 不是从源码扫描,而是从 CMake 缓存中提取目标列表。关键动作是让 CMake 成功跑完一次:
Visual Studio 18.8.1 官方固定版本安装引导程序,当前条目使用微软发布历史中的 Professional Web Installer,适合旧项目兼容、环境回退、复现特定构建链和排查版本差异等场景。
- 首次打开文件夹后,观察“输出”窗口 → 切换到“CMake”选项卡,确认没有
CMake Error:或Parse error - 若卡在“正在配置 CMake 项目…”,检查
CMakeSettings.json(位于项目根/.vs/目录下)中generator是否合法,如"generator": "Ninja"或"Visual Studio 17 2022";错误值(如拼错为"Ninjaa")会导致静默失败 - 右键
CMakeLists.txt→ “生成 CMake 缓存” 可强制重试;成功后,“解决方案资源管理器”顶部会出现“CMake 目标视图”标签页,里面应列出所有可执行目标 - 若目标名含空格或特殊字符(如
my app),VS 可能无法正确注册——改用下划线命名,如my_app
不想每次点下拉菜单?设默认启动项
避免手动选,也防止误点错目标:
- 在“解决方案资源管理器”切换到“CMake 目标视图”,右键你要运行的可执行目标 → “设置为启动项”
- 也可在
launch.vs.json(位于 .vs 文件夹)中显式指定:"projectTarget": "MyExecutableName",这个字段必须和add_executable(MyExecutableName ...)的第一个参数完全一致(大小写敏感) - 注意:
launch.vs.json中的projectTarget值不能带扩展名(如不要写MyExecutableName.exe),只写目标名 - 设好后,F5/Ctrl+F5 就永远作用于该目标,除非你再右键另选
最容易被忽略的一点:VS 的 CMake 集成依赖后台索引完成。即使 CMake 缓存生成成功,若“解决方案资源管理器”里还显示“正在加载项目信息…”或 IntelliSense 未就绪,F5 可能仍失败。等右下角状态栏不再闪烁、且“CMake 目标视图”可展开,才是真正的就绪状态。

















