一、先安装clang
brew install --with-toolchain llvm
注意安装的时候要接电源,因为编译需要花很长时间;我的Macbook pro 2017花了将近40分钟才编译完成,电池消耗大约30%
二、安装插件
三、配置
(一)创建工作区文件夹
建立一个文件夹,比如命名为 c_workspace,然后在里面建立一个 .vscode 文件夹
在VSCode里面选择 打开文件夹 打开工作区,例如这里的 c_workspace
(二)配置文件
涉及到两个配置文件
tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Compile",
"type": "shell",
"command": "clang",
"args": [
"${file}",
"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
"${fileDirname}/${fileBasenameNoExtension}",
"-g", // 生成和调试有关的信息
"-Wall", // 开启额外警告
"-std=c11" // C语言最新标准为c11,或根据自己的需要进行修改
],
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true
},
"dependsOn": [
"Sleep"
]
},
{
"label": "Clean",
"type": "shell",
"command": "rm",
"args": [
"-rf",
"${fileDirname}/${fileBasenameNoExtension}",
"${fileDirname}/${fileBasenameNoExtension}.dSYM"
],
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true
}
},
{
"label": "Sleep", // 没有任何功能,只是简单暂停一下,增加视觉效果
"type": "shell",
"command": "sleep",
"args": [
"1"
],
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true
},
"dependsOn": [
"Clean"
]
},
{
"label": "Build",
"group": {
"kind": "build",
"isDefault": true
},
"dependsOn": [
"Compile"
],
"problemMatcher": "$gcc"
}
]
}
launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // 如果要调试有输入互动的程序,那么就要从外部控制台启动;vscode的集成控制台不支持输入;
"MIMode": "lldb",
"preLaunchTask": "Build"
}
]
}
屏幕快照 2018-09-23 00.17.18.png
(三)注意事项
Task 之间的依赖关系:
每一个Task需要依赖的前置Task,写在 dependsOn: [ ... ] 当中,不分先后,并发执行;
如果需要有明确的依赖,则应该把 Task 依次连接,形成依赖链,例如上面的例子:
Build
错误的做法:
Build
即如果在 Build 当中:
"dependsOn": [
"Compile",
"Sleep",
"Clean"
]
的实际效果是:Build 在 这三个Task 全部完成之后再执行,但是这三个任务是并发的。
四、使用方法
(一)编译
快捷键:shift + command + b :编译,实际上是调用上面定义的 launch.json 里的任务
命令面板:shift + command + p ,键入 Tasks: Run Task,然后选择上面定义的 Build 任务
屏幕快照 2018-09-22 23.31.13.png
屏幕快照 2018-09-22 23.31.53.png
屏幕快照 2018-09-22 23.32.38.png
(二)运行
在终端中运行
ctrl + ` 打开终端
屏幕快照 2018-09-22 23.35.10.png
在调试中运行
别忘记设置断点。由于程序是在外部命令行窗口执行的,别忘记把程序的窗口切换出来。
屏幕快照 2018-09-22 23.36.59.png
五、其它参考