macOS下使用VSCode打造PAT练习环境

  这篇文章用于记录搭建基于macOS + VS Code + clang + lldb的PAT练习环境。在完成以后,可以全身心的投入PAT练习,而不需要操心做题以外的其他问题,该环境具有如下功能:

  1. 轻量级的编辑器
  2. 代码补全功能
  3. 代码格式化功能
  4. 完善的调试功能

安装clang编译器

  macOS的官方IDE——Xcode使用clang作为编译器,因此在这里我们抛弃传统gcc编译器,使用clang代替。系统中默认没有安装clang,但是为了练习PAT而安装一整套Xcode开发环境太过于大动干戈,我们仅需要安装其中的clang编译器完成代码的编译工作即可。

  1. 打开终端输入
1
clang++
  1. 跳出提示需要安装命令行安装工具 -> 安装
  2. 等待安装完成
  3. 输入
1
clang++ -v
  1. 若显示类似以下信息,则说明安装成功
1
2
3
4
> Apple LLVM version 10.0.1 (clang-1001.0.46.4)
> Target: x86_64-apple-darwin18.7.0
> Thread model: posix
> InstalledDir: /Library/Developer/CommandLineTools/usr/bin

安装VS Code

  1. 前往VS Code官网,下载VS Code并安装。
  2. 打开VS Code,安装插件C/C++C/C++ Clang Command Adapter

为VS Code配置C++开发环境

配置代码补全及格式化功能

  1. 新建一个用于存放代码的文件夹
  2. 同时按住command + shift + P,输入C/C++
  3. 选择C/C++: Edit Configurations (JSON)
  4. 系统会自动生成.vscode/c_cpp_properties.json文件,打开该文件
  5. 修改cppStandardc++14,同步PAT测试平台C++版本
  6. 新建一个test.cpp测试文件,并输入以下代码,可以发现代码补全已经可以正常使用
  7. 同时按住option + shift + f,即可格式化代码
1
2
3
4
5
6
#include <iostream>
int main()
{
std::cout << "hello world" << std::endl;
return 0;
}

配置任务,编译代码

  1. 同时按住command + shift + P,输入Tasks
  2. 选择Tasks: Configure Default Build Task
  3. 选择C/C++: clang++ build active file
  4. 系统会自动生成.vscode/tasks.json文件,打开该文件
  5. args中添加-Wall-std=c++14-lm参数,同步PAT测试平台编译参数

配置调试任务,运行并调试代码

  1. 打开调试侧边栏
  2. 新建配置,选择C++ (GDB/LLDB)
  3. 系统会自动生成.vscode/launch.json文件,打开该文件
  4. 修改program内容为${fileDirname}/${fileBasenameNoExtension}
  5. 新建preLaunchTask项,内容为tasks.json文件中label内的值,表示运行调试任务前,先执行编译操作
  6. 在任意一行代码处设置断点,并按下F5,可以看到程序在断点处中断,在左侧调试窗口,可以看到变量的值

替换lldb调试器

  完成之前的工作后,已经可以正常调试代码,但是对于STL容器,例如vector,并不能观测到容器内部的变量,因为C/C++插件自带的lldb调试器版本较旧,下面来解决这个问题。

  1. 安装CodeLLDB插件
  2. 在OUTPUT窗口可以观察到正在自动下载新版本的lldb
  3. 等待安装完成,打开.vscode/launch.json文件
  4. 修改typelldb
  5. 启动调试,并进入断点,可以成功观察到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