用Visual Studio Code 在Linux(Ubuntu)下构造c++ 的集成开发环境,编辑,编译和调试运行一个简单程序HelloWorld。
想达到上面目标,搜索到以下文章,学习验证而成本文日记。
链接是:https://code.visualstudio.com/docs/cpp/config-linux
前期准备
运行环境是ubuntu16.0,先安装好Visual Studio Code(VS Code)
安装好VS Code 的C++ 扩展,可以在VS code里Ctrl+Shift+X,然后输入C++
确保gcc 安装好了,检查方法是:
1 | gcc --version |
如果没有,先更新系统
1 | sudo apt-get update |
然后如下安装gcc 和 gdb
1 | sudo apt-get install build-essential gdb |
我的ubuntu 16 这样后,gcc版本是5.8,有点低。
建立helloworld
在终端建立一个helloworld目录,然后启动VScode,如下:
1 2 3 | mkdir helloworld cd helloworld code . |
本实验完成后,将在工作空间目录建立3个文件
tasks.json (编译链接设置)launch.json (调式设置)c_cpp_properties.json (c++属性设置)
在文件资源管理器标题栏中,选择“新建文件”并命名文件helloworld.cpp

编辑或粘贴下面代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> #include <vector> #include <string> using namespace std; int main() { // Create an empty vector vector<int> vect; vect.push_back(10); vect.push_back(20); vect.push_back(30); for (int i = 0; i <vect.size(); i++) { cout << vect[i] << endl; } cout << endl; } |
原文的代码要求gcc版本比较高,我修改如上,你也可以改成更简单的代码。
ctrl + S 保存文件
VScode 的文件浏览器里可以看到这个文件:

编译helloworld
这一步将建立
主菜单里 Terminal > Configure Default Build Task
一个下拉菜单里让你选择编辑器

根据你的情况选择编译工具,这就是上文要准备好的gcc, 上图我是复制的,我自己的界面不一样,当然类似。
这样就建立了tasks.json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "g++ build active file", "command": "/usr/bin/g++", "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"], "options": { "cwd": "/usr/bin" }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true } } ] } |
在这里${file}指当前活动文件,当打开文件helloworld.cpp,就是helloworld.cpp。
编译链接
回到helloworld.cpp, 这个很重要,这时 ${file} =helloworld.cpp ,
按Ctrl+Shift+B 或者主菜单>Terminal>Run Build Task
编译链接就按
1 2 3 4 | > Executing task: /usr/bin/g++ -g /home/liwenz/helloworld/helloworld.cpp -o /home/liwenz/helloworld/helloworld < Terminal will be reused by tasks, press any key to close it. |
我们可以看到参数的替换
/home/liwenz/helloworld/helloworld.cpp => ${file}
/home/liwenz/helloworld/helloworld=>${fileDirname}/${fileBasenameNoExtension}
走完第一个helloworld流程后,再做这个helloworld时,我没注意,编译时打开tasks.json , 结果总报错,我当时还不会看错误,错误指示如下:
1 2 3 | Executing task: /usr/bin/g++ -g /home/liwenz/helloworld/.vscode/tasks.json -o /home/liwenz/helloworld/.vscode/tasks < /usr/bin/ld:/home/liwenz/helloworld/.vscode/tasks.json: file format not recognized; treating as linker script /usr/bin/ld:/home/liwenz/helloworld/.vscode/tasks.json:1: syntax error collect2: error: ld returned 1 exit status The terminal process terminated with exit code: 1 |
现在回过头来看,看到 task 的内容,就知道怎么错了。
修改tasks.json
上面的task.json 可以根据我们需要修改。
如果要编译多个.cpp 文件,可以修改
这样就不必一定要回到helloworld.cpp 然后才能编译链接。
Debug helloworld.cpp
这一步我们创建 launch.json
在主菜单 Run > Add Configuration... 然后选择 C++ (GDB/LLDB)
在下拉菜单里选择 g++ build and debug active file.
这样就形成了一个launch.json 文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | { "version": "0.2.0", "configurations": [ { "name": "g++ build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "g++ build active file", "miDebuggerPath": "/usr/bin/gdb" } ] } |
缺省情况下, stopAtEntry 设置成 false, 这样不会有任何断点,修改为true, 则Debug时会停在 main 函数开始处。
开始调试
回到打开helloworld.cpp 的状态,F5 或者菜单 Run > Start Debugging 就开始调试了。同样没有修改这个launch.json ,必须回到helloworld.cpp 因为里面包含了
停到断点后,出现下面Debug 控制条,意义鼠标放在上面有提示,分别是暂停(下图中为灰),继续运行,单步,单步内进,单步外退,重新开始,停止。
![]()
可以Add Watch ,也可以看到各变量的值
C/C++ configurations(配置)
如果要更进一步配置c/c++,则可以用 c_cpp_properties.json 文件。
Ctrl+Shift+P 然后输入c/c++

这里只是简单提一下。
配置的重用
把配置文件复制到新工程的 .vscode 目录下即可,然后根据情况修改这几个json 文件。
介绍到此,可以看看我学习的链接。