目录
文章目录
- 目录
- 安装 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
- 下载安装包:https://code.visualstudio.com/Download
- 解压并将文件放入 “应用程序”。
配置 C/C++ 开发环境
官方文档:https://code.visualstudio.com/docs/cpp/config-clang-mac
安装 C/C++ 编程常用扩展插件:
- C/C++
- C/C++ Clang Command Adapter
- C/C++ Extension Pack
- C/C++ Themes
- CMake
- CMake Tools
- Makefile Tools
- Code Runner
- CodeLLDB
- Remote – SSH
检查 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
- 安装 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 还支持与容器化的开发环境集成,使得开发者可以在容器中进行远程开发。
获取 VS Code 客户端的 commit ID,e.g. 5e805b79fcb6ba4c2d23712967df89a089da575b
浏览器下载 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
- 将 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
- 在远端服务器上安装 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
Client 连接 Server。
一键安装 Local 的扩展到 Remote。
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 个文件:
- tasks.json (compiler build settings)
- launch.json (debugger settings)
- 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 文件。