本人一直使用Xcode和CLion编写C和C++的程序,因为Mac上VSCode的环境一直配置不好,要么无法运行要么无法调试。在我终于弄懂了如何配置VSCode环境后,决定分享一下我的操作过程。
如果你的Mac也无法成功用VSCode写c或cpp,或者配置中有一些问题,那这个教程就是为你而来。
备注一下我的电脑情况:Intel 的 MacBook Pro, macOS Catalina 10.15.7
Contents
- clang、lldb等命令行工具的安装
- VSCode的安装
- VSCode的环境配置与基础操作
- 手动编译运行一个程序
- 一键编译运行——coderunner的配置
- 断点调试——tasks.json和launch.json的配置
- 一些VSCode插件推荐
clang、lldb等命令行工具的安装
在终端里输入clang --version
、 lldb --version
看一下是不是装好了gcc、g++(编译器)和lldb(调试器)。
如果出现command not found
,说明还没有装好,请去APP store下载Xcode。Xcode带有很多很多的命令行工具,包括上面的这些。注意Xcode的体积约12GB,如果你不想下载这么大的软件,也可以按照提示仅下载Command line tools,体积会小很多。
VSCode的安装
官网下载安装visual studio code. 略。
VSCode的环境配置与基础操作
手动编译运行一个程序
打开vscode,你会看到这样的界面
左边的边栏上,这几个按钮的功能如下:
我们随便打开或者新建一个文件夹。这里我在桌面上新建了一个名为「c」的文件夹,里面写了一个hello world。
程序写完了,如何编译运行呢?首先command + S
保存(不要忽略保存这一步),然后在下面的终端中(按command+J
可打开底栏),输入 g++ Helloworld.cpp -o Helloworld
编译,再输入./Helloworld
运行程序。
可以看到这段程序已经成功运行。但是,手输这两句命令是不是太烦了?如何一键运行?我们需要安装一个插件——coderunner
.
一键编译运行——coderunner的配置
下载插件coderunner
。这样vscode的右上角会出现运行按钮,点击即可自动编译运行,省去了手输g++ xxx.cpp -o xxx
或g++ xxx.cpp -o xxx -W -Wall -O2 -std=c++17
等命令的麻烦。
需要注意的是,要在coderunner的设置中把Run in terminal
打开(如果不打开,程序运行结果会在’output‘中显示,output是只读的,会导致无法scanf
、cin
等)。另外强烈建议把save file before run
打开,防止没有先保存再运行导致错误结果。
建议在当前工作区新建一个.vscode
文件夹,里面新建一个settings.json
,复制上去一下内容。
settings.json
我的settings.json
内容
{
"code-runner.executorMap": {
"cpp": " cd $dir && g++ $fileName -o $fileNameWithoutExt -W -Wall -std=c++17 && ./$fileNameWithoutExt",
"c" : " cd $dir && gcc $fileName -o $fileNameWithoutExt -W -Wall -std=c17 && ./$fileNameWithoutExt",
},
"code-runner.clearPreviousOutput": true,
"code-runner.saveAllFilesBeforeRun": false,
"code-runner.saveFileBeforeRun": true,
"code-runner.showExecutionMessage": true,
"code-runner.runInTerminal": true,
"code-runner.preserveFocus": false,
"code-runner.ignoreSelection": true,
"launch": {
"configurations": [],
"compounds": []
}
}
上面这个json可以更改一些coderunner的设置,包括运行代码的命令等。
但是coderunner只能运行,不能调试,打断点没有任何效果。如果要调试的话,我们需要手动配置一些东西,这些“东西”就是下面要说的—— tasks.json
和launch.json
.
断点调试——tasks.json和launch.json的配置
现在,我们给刚才的程序打上断点,然后在左侧边栏中的调试按钮乱点一通,可能会发现始终无法调试。(因为VSCode给的默认配置不太好使)
为了调试,首先我们要下载一个插件 CodeLLDB
我们在工作区的.vscode
文件夹内(如果没有的话就新建一个),新建两个名为 tasks.json
和 launch.json
的文件。
把下面这些内容复制上去。(有空的时候我会更新详解一下这些配置文件有什么用、为什么要这样写,不过现在,你先不要管这是什么,先复制上去)
launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "cpp debug",
"preLaunchTask": "g++ compile",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
// "environment": [], // 放置环境变量
"cwd": "${workspaceFolder}",
}
]
}
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "g++ compile", //(这个label随便设置都可以,会显示在选项里)
"type": "shell", // shell: 输入命令
"command": "cd $dir && g++ $fileName -g -o $fileNameWithoutExt -W -Wall -std=c++17 && ./$fileNameWithoutExt",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "silent",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": {
"owner": "cpp",
"fileLocation": "absolute",
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
]
}
保存好这两个json配置文件之后,在vscode左边边栏的“调试”中,应该就能看到cpp debug的字样。
点击那个cpp debug旁边的运行按钮,等着。
不出意外的话,程序会卡在断点处。
这样我们就可以调试程序啦!
在左侧会显示变量的值,如果需要关注某个变量,可以将其添加到’watch‘。可以使用上方的箭头按钮,也可以用快捷键F5(continue)、F11(单步运行)、Shift+F11(单步跳过)等控制调试。
一些VSCode插件推荐
首先是一些必备插件
刚才讲过的CodeRunner
和CodeLLDB
.
C/C++
美化代码,让代码语法高亮更加准确的插件:Better C++ Syntax
Beautify
让多个括号(比如 {{},(({},[]))}{[()]}
)能够以多彩颜色显示的插件 Bracket pair colorizer 2
我个人比较喜欢的主题 One Dark Pro
(现在是凌晨00:52,暂时不写了,未完待续)
THE END