You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VSCode中通过CMake Tools启动同一CMake文件的主项目

问题:VSCode CMake Tools仅识别测试项目,无法启动main_project

当前.vscode/launch.json配置如下:

{
  "name": "Launch main project",
  "type": "cppdbg",
  "request": "launch",
  // Resolved by CMake Tools:
  "program": "${command:cmake.launchTargetPath}",
  "args": [],
  "stopAtEntry": false,
  "cwd": "${workspaceFolder}",
  "environment": [
    {
      // add the directory where our target was built to the PATHs
      // it gets resolved by CMake Tools:
      "name": "PATH",
      "value": "${env:PATH}:${command:cmake.getLaunchTargetDirectory}"
    }
  ],
  "MIMode": "gdb",
  "setupCommands": [
    {
      "description": "Enable pretty-printing for gdb",
      "text": "-enable-pretty-printing",
      "ignoreFailures": true
    }
  ]
}

CMakeLists.txt内容:

cmake_minimum_required(VERSION 3.2.0...3.5)
project(main_project  VERSION 0.1.0)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

add_subdirectory( tests )  // this is the test project 
add_executable(main_project main.cpp)
target_include_directories(main_project  PRIVATE ${YOUR_DIRECTORY})
解决方案

方法1:手动指定CMake启动目标

  • 点击VSCode底部状态栏中CMake Tools显示的当前目标(通常是测试项目名称)
  • 在弹出的目标列表里选择main_project作为启动目标
  • 重新运行launch配置,此时${command:cmake.launchTargetPath}会自动指向main_project的可执行文件

方法2:直接指定可执行文件路径

如果方法1无效,可修改launch.json的program字段,直接填写main_project的实际编译路径:

"program": "${workspaceFolder}/build/main_project"  // 根据你的构建目录结构调整,比如Debug版本可能是${workspaceFolder}/build/Debug/main_project

方法3:调整CMakeLists.txt的目标顺序

将主项目的编译代码移到测试项目之前,让CMake优先识别主项目:

cmake_minimum_required(VERSION 3.2.0...3.5)
project(main_project  VERSION 0.1.0)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

add_executable(main_project main.cpp)
target_include_directories(main_project  PRIVATE ${YOUR_DIRECTORY})
add_subdirectory( tests )  // this is the test project 

方法4:设置CMake默认启动目标

在CMakeLists.txt末尾添加代码,指定main_project为全局默认启动目标:

set_property(GLOBAL PROPERTY VS_STARTUP_PROJECT main_project)

内容的提问来源于stack exchange,提问作者Chen Peleg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:27:14