VSCode需手动配置C++编译环境:先安装g++/clang++并加入PATH,再安装C/C++和Code Runner插件;多文件项目须配置tasks.json构建和launch.json调试路径一致。

VSCode 本身不带 C++ 编译器,必须手动配置外部工具链;直接点击运行按钮会报错 command 'C_Cpp.BuildAndDebug' not found 或提示找不到 g++,这不是 VSCode 的问题,而是环境没装齐。
确认已安装编译器(g++ 或 clang++)
VSCode 只是编辑器,真正编译靠系统里的编译器。Windows 推荐装 MinGW-w64(选 x86_64-posix-seh 版本),macOS 用 Xcode Command Line Tools(运行 xcode-select --install),Linux 直接 sudo apt install g++(Debian/Ubuntu)或 sudo yum install gcc-c++(CentOS/RHEL)。
装完后在终端执行:
g++ --version
如果提示 command not found,说明没加进 PATH —— Windows 要手动把 MinGW 的 bin 目录(如 C:\mingw64\bin)加到系统环境变量;macOS/Linux 检查 ~/.zshrc 或 ~/.bash_profile 是否有 export PATH="/usr/local/bin:$PATH" 类似语句。
立即学习“C++免费学习笔记(深入)”;
安装必要插件:C/C++ 和 Code Runner
仅装 Microsoft 官方的 C/C++ 插件(ID:ms-vscode.cpptools)还不够,它只提供智能提示和调试支持,不负责一键编译运行。建议额外装 Code Runner(ID:formulahendry.code-runner),它能快速执行单文件程序。
-
C/C++插件启用后,会在项目根目录生成.vscode/c_cpp_properties.json,用于指定includePath和compilerPath—— 如果你用了非默认路径的g++,这里必须手动改compilerPath,比如"compilerPath": "C:/mingw64/bin/g++.exe" -
Code Runner默认用g++编译,但不读c_cpp_properties.json;如需自定义命令,修改settings.json中的code-runner.executorMap,例如:
"code-runner.executorMap": {
"cpp": "cd $dir && g++ -std=c++17 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
}
注意 Windows 下要用 && 连接命令,Linux/macOS 用 &&;-std=c++17 可按需换成 c++20。
配置 tasks.json 实现真正可控的构建
如果写多文件项目、需要链接第三方库,或者想用 Ctrl+Shift+B 触发构建,就得配 .vscode/tasks.json。它比 Code Runner 更底层、更稳定,且与调试器(launch.json)天然协同。
生成方式:打开命令面板(Ctrl+Shift+P),输入 Tasks: Configure Task → Create tasks.json file from template → G++ Build Active File。
关键点:
- 确保
args里包含-g(生成调试信息),否则launch.json无法断点 - 若项目含多个源文件,不能只写
$fileName,得改成$fileDirname/*.cpp或列全路径 - 输出文件名统一用
-o $fileDirname/out,避免每次编译生成一堆.exe文件 - Windows 用户注意路径分隔符,
args中不要出现反斜杠\,一律用正斜杠/
调试前务必检查 launch.json 的 program 路径
点绿色三角形调试时,如果报错 Cannot start process, exception while trying to start process: Access is denied 或 The specified executable does not exist,大概率是 launch.json 里的 program 字段指向了错误路径。
常见错误写法:
"program": "${fileDirname}/${fileBasenameNoExtension}.exe"
问题在于:如果 tasks.json 把可执行文件生成到了别的目录(比如 build/),这里就找不到。正确做法是保持一致:
- 要么让
tasks.json输出到${fileDirname}/,并确保launch.json的program与之匹配 - 要么在
launch.json中显式写死路径,如"program": "${fileDirname}/build/main"(Linux/macOS)或"program": "${fileDirname}/build/main.exe"(Windows) - Windows 下还容易因杀毒软件拦截导致“Access is denied”,可临时关闭或添加信任
多文件项目里,program 必须指向最终链接出的可执行文件,不是某个 .cpp 源文件。










