macOS下使用VSCode打造PAT练习环境
这篇文章用于记录搭建基于macOS + VS Code + clang + lldb
的PAT练习环境。在完成以后,可以全身心的投入PAT练习,而不需要操心做题以外的其他问题,该环境具有如下功能:
- 轻量级的编辑器
- 代码补全功能
- 代码格式化功能
- 完善的调试功能
安装clang编译器
macOS的官方IDE——Xcode使用clang作为编译器,因此在这里我们抛弃传统gcc编译器,使用clang代替。系统中默认没有安装clang,但是为了练习PAT而安装一整套Xcode开发环境太过于大动干戈,我们仅需要安装其中的clang编译器完成代码的编译工作即可。
- 打开终端输入
1 |
clang++ |
- 跳出提示需要安装命令行安装工具 -> 安装
- 等待安装完成
- 输入
1 |
clang++ -v |
- 若显示类似以下信息,则说明安装成功
1 |
> Apple LLVM version 10.0.1 (clang-1001.0.46.4) |
安装VS Code
- 前往VS Code官网,下载VS Code并安装。
- 打开VS Code,安装插件
C/C++
和C/C++ Clang Command Adapter
为VS Code配置C++开发环境
配置代码补全及格式化功能
- 新建一个用于存放代码的文件夹
- 同时按住
command + shift + P
,输入C/C++
- 选择
C/C++: Edit Configurations (JSON)
- 系统会自动生成
.vscode/c_cpp_properties.json
文件,打开该文件 - 修改
cppStandard
为c++14
,同步PAT测试平台C++版本 - 新建一个
test.cpp
测试文件,并输入以下代码,可以发现代码补全已经可以正常使用 - 同时按住
option + shift + f
,即可格式化代码
1 |
|
配置任务,编译代码
- 同时按住
command + shift + P
,输入Tasks
- 选择
Tasks: Configure Default Build Task
- 选择
C/C++: clang++ build active file
- 系统会自动生成
.vscode/tasks.json
文件,打开该文件 - 在
args
中添加-Wall
、-std=c++14
、-lm
参数,同步PAT测试平台编译参数
配置调试任务,运行并调试代码
- 打开调试侧边栏
- 新建配置,选择
C++ (GDB/LLDB)
- 系统会自动生成
.vscode/launch.json
文件,打开该文件 - 修改
program
内容为${fileDirname}/${fileBasenameNoExtension}
- 新建
preLaunchTask
项,内容为tasks.json
文件中label
内的值,表示运行调试任务前,先执行编译操作 - 在任意一行代码处设置断点,并按下
F5
,可以看到程序在断点处中断,在左侧调试窗口,可以看到变量的值
替换lldb调试器
完成之前的工作后,已经可以正常调试代码,但是对于STL容器,例如vector,并不能观测到容器内部的变量,因为C/C++
插件自带的lldb调试器版本较旧,下面来解决这个问题。
- 安装
CodeLLDB
插件 - 在OUTPUT窗口可以观察到正在自动下载新版本的lldb
- 等待安装完成,打开
.vscode/launch.json
文件 - 修改
type
为lldb
- 启动调试,并进入断点,可以成功观察到vector内部元素的值
总结
至此一个舒适的学习环境已搭建完成,耗时约15分钟。
可进行的后续操作
- 对于编译后的文件,可以添加
.out
或.exe
等扩展名,方便git排除文件或执行清理等操作,相信聪明的你可以找到在哪修改 - 安装
Chinese (Simplified) Language Pack for Visual Studio Code
插件可以汉化VS Code - 安装漂亮的VS Code主题
- 直接启动编译好的文件,不使用调试功能,加快启动速度(新建一个task,配置启动功能,并绑定快捷键)
参考文献
Get Started with C++ and Clang/LLVM in Visual Studio Code on macOS
附注
本篇文章配置时,所使用的环境均为当时的最新版本,若后续版本失效,欢迎留言告知。
- macOS: 10.14.6
- VS Code: 1.38.0
- C/C++: 0.25.1
- C/C++ Clang Command Adapter: 0.2.3
- CodeLLDB: 1.3.0
- clang: 1100.0.20.17