必须安装g++和build-essential,tasks.json与c_cpp_properties.json需手动配置;运行g++ --version验证,若失败则sudo apt install build-essential,再用echo测试编译。

g++ 必须装好,tasks.json 和 c_cpp_properties.json 两个文件必须手动生成并配对,否则连基础编译和跳转都不可靠——这不是可选步骤,是硬性前提。
确认系统已安装 g++ 和 build-essential
VSCode 本身不带编译器,它只是调用系统命令。如果没装 g++,点 Ctrl+Shift+B 会直接报错:command 'g++' not found。
- 运行
g++ --version确认存在;若报错,先执行sudo apt install build-essential(它会自动装g++、gcc、make等) - 别只装
g++单独包——有些 Ubuntu 镜像(如最小化安装或 Docker 容器)里缺libstdc++6-dev,会导致链接失败,build-essential能一次性补全依赖 - 验证是否真能编译:在终端里跑
echo '#include <iostream>\nint main(){std::cout test.cpp && g++ test.cpp -o test && ./test</iostream>,输出ok才算过关
tasks.json 的 args 别照抄模板
自动生成的 tasks.json 默认只编译当前打开的单个文件("${file}"),但实际项目往往有多个 .cpp 文件,或需要指定头文件路径。硬编码路径或通配符容易出问题。
- 多文件编译建议用
"${workspaceFolder}/**/*.cpp",但注意:g++ 不支持 shell 展开,得靠sh -c包一层,所以"type": "shell"比"type": "cppbuild"更可控 -
-o输出路径别写死成${fileDirname}/xxx——如果工程里有子目录,生成的可执行文件可能被覆盖或找不到;推荐统一输出到${workspaceFolder}/bin/,提前建好目录 - 调试必需的
-g不能漏;想看彩色错误提示就加-fdiagnostics-color=always;C++17 特性要用就加-std=c++17
c_cpp_properties.json 的 includePath 和 compilerPath 必须匹配
智能提示失效、#include 报红、跳转进不了标准库,90% 是因为这两个字段不一致,或者没指向真实安装路径。
-
compilerPath建议写绝对路径,比如"/usr/bin/g++";不要写"g++"——VSCode 不走 shell PATH 查找,容易 fallback 到旧版本 -
includePath至少包含"/usr/include/c++/*"和"/usr/include/x86_64-linux-gnu/c++/*"(路径随架构和 GCC 版本变,可用g++ -v -E -x c++ /dev/null查看实际 include 搜索顺序) - 如果用了非系统工具链(比如交叉编译器),
compilerPath和includePath必须同源,否则提示和编译行为会割裂
别忽略 launch.json 里的 preLaunchTask 对齐
点绿色 ▶ 运行时提示 “没有活动的构建任务”,大概率是 launch.json 里 preLaunchTask 的值和 tasks.json 中 label 字段不完全一致(大小写、空格、冒号都算)。
-
preLaunchTask必须严格等于某个 task 的label字符串,比如"label": "C/C++: g++ build active file",那preLaunchTask就得写成一模一样的字符串 - 如果改过
tasks.json的label,一定要同步改launch.json,VSCode 不会自动同步 - 调试前务必先手动运行一次构建任务(Ctrl+Shift+B),确保二进制已生成且路径正确;
program字段填的是可执行文件路径,不是源码路径
compilerPath 和 includePath 的版本对应、label 和 preLaunchTask 的字面一致性,这些细节一旦错位,现象就是“看起来都配好了,但就是不工作”。


















