目录

文章目录

  • 目录
  • 安装 VS Code
  • 配置 C/C++ 开发环境
  • 配置 VS Code Server 和 Remote SSH 远程开发扩展
  • 配置第三方 C/C++ include 库的路径
  • 配置 Call Hierarchy(调用层次结构)
  • 配置 Call Graph(调用图)
  • Hello World
    • 1、创建项目和源码
    • 2、编译运行
    • 3、调试
  • C/C++ configuration

安装 VS Code

  1. 下载安装包:https://code.visualstudio.com/Download
  2. 解压并将文件放入 “应用程序”。

配置 C/C++ 开发环境

官方文档:https://code.visualstudio.com/docs/cpp/config-clang-mac

  1. 安装 C/C++ 编程常用扩展插件:

    1. C/C++
    2. C/C++ Clang Command Adapter
    3. C/C++ Extension Pack
    4. C/C++ Themes
    5. CMake
    6. CMake Tools
    7. Makefile Tools
    8. Code Runner
    9. CodeLLDB
    10. Remote – SSH
  2. 检查 MacOS 上的 Clang/LLVM 环境。

$ clang --versionApple clang version 14.0.0 (clang-1400.0.29.202)Target: x86_64-apple-darwin21.6.0Thread model: posixInstalledDir: /Library/Developer/CommandLineTools/usr/bin
  1. 安装 code 指令,便于通过指令行进行操作。

配置 VS Code Server 和 Remote SSH 远程开发扩展

VS Code Server 是一个 VS Code 的远程开发工具,可以让用户在远程计算机上使用 VS Code 编辑器的功能。使用 VS Code Server 可以让用户在本地电脑上使用轻量级的 VS Code 客户端,而将开发环境部署到远程服务器上,这样可以减轻本地计算机的负担,同时也可以让多个用户协同编辑同一个项目。

VS Code Server 通过在远程计算机上运行一个简单的 Web 服务来实现。用户可以通过 VS Code 客户端连接到该服务,从而在远程计算机上使用 VS Code 编辑器的功能。

此外,VS Code Server 还支持与容器化的开发环境集成,使得开发者可以在容器中进行远程开发。

  1. 获取 VS Code 客户端的 commit ID,e.g. 5e805b79fcb6ba4c2d23712967df89a089da575b

  2. 浏览器下载 commit ID 对应的 vscode-server-linux-x64.tar.gz 安装包。

# https://update.code.visualstudio.com/commit:{commit_id}/server-linux-x64/stablehttps://update.code.visualstudio.com/commit:5e805b79fcb6ba4c2d23712967df89a089da575b/server-linux-x64/stable
  1. 将 vscode-server-linux-x64.tar.gz 上传到远端服务器。
remote$ mkdir -p ~/.vscode-server/binlocal $ scp vscode-server-linux-x64.tar.gz root@192.168.1.3:~/.vscode-server/bin
  1. 在远端服务器上安装 vscode-server。
$ cd ~/.vscode-server/bin$ tar -zxvf vscode-server-linux-x64.tar.gz$ mv vscode-server-linux-x64 5e805b79fcb6ba4c2d23712967df89a089da575b$ rm -rf vscode-server-linux-x64.tar.gz$ cd 5e805b79fcb6ba4c2d23712967df89a089da575b$ touch 0
  1. Client 连接 Server。

  2. 一键安装 Local 的扩展到 Remote。

  3. Open Folder 开发 Remote 的文件目录。

配置第三方 C/C++ include 库的路径

  • .vscode/c_cpp_properties.json
{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/opt/dpdk-18.08/x86_64-native-linuxapp-gcc/include",// 添加第三方库的 include 路径。],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++14","intelliSenseMode": "linux-gcc-x64","configurationProvider": "ms-vscode.makefile-tools"}],"version": 4}

配置 Call Hierarchy(调用层次结构)

  • 安装 GNU C Call Hierarchy 插件。
  • 安装 glboal。
yum install global -y
  • 生成 gtags 符号文件。
$ cd your_project_folder$ gtags$ code .
  • 右击函数 Show Call Hierarchy。

配置 Call Graph(调用图)

Hello World

1、创建项目和源码

$ mkdir /workspace/projects$ cd /workspace/projects$ mkdir helloworld$ cd helloworld$ code .

使用 code 指令将该目录定义为一个代码项目的工作目录,在该目录下我们会创建 1 个 VS code 代码项目专有的配置目录 .vscode,包含了以下 3 个文件:

  1. tasks.json (compiler build settings)
  2. launch.json (debugger settings)
  3. c_cpp_properties.json (compiler path and IntelliSense settings)

创建 C/C++ 源码文件:

#include int main(){for (int i=0; i<3; i++){std::cout << "hello world" << std::endl;}return 0;}

2、编译运行

  • 运行并查看输出:

  • 第一次运行后会自动生成 tasks.json 文件,设置了代码编译和构建的配置参数。

{"tasks": [{"type": "cppbuild","label": "C/C++: clang++ 生成活动文件","command": "/usr/bin/clang++","args": ["-fcolor-diagnostics","-fansi-escape-codes","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"}
  • 对应的编译指令:
/usr/bin/clang++ -fcolor-diagnostics -fansi-escape-codes -g /workspace/projects/helloworld/helloworld.cpp -o /workspace/projects/helloworld/helloworld

3、调试

  • 单击行号插入 breakpoint。

  • 进入调试界面开始调试:

在需要自定义 debug 流程的场景中,可以通过添加 launch.json 配置文件来完成。

  • 原始文件:
{"configurations": [{"name": "C/C++: clang++ 生成和调试活动文件","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "lldb","preLaunchTask": "C/C++: clang++ 生成活动文件"}],"version": "2.0.0"}
  • 自定义使用 CodeLLDB 插件:
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/" />=830387"version": "0.2.0","configurations": [{"type": "lldb","request": "launch","name": "Debug","program": "${fileDirname}/${fileBasenameNoExtension}.out","args": [],"cwd": "${workspaceFolder}"}]}

C/C++ configuration

最后,针对 C/C++ 的诸多扩展内容,我们可以通过 UI 的方式来设置相关的配置,同时会自动生成 c_cpp_properties.json 文件。