背景
公司的代码风格是Google,要求设置自动化格式;文龙和李泽分别在linux和windows下设置的,我参考了李泽的win10下的设置,结果踩了个大坑,浪费了整整一天;
过程
李泽提供的设置过程:
1.下载
官网下载vscode https://code.visualstudio.com/
——重点说明:我就是这里踩了大坑,由于公司网络问题,从官网下载总是失败,所以就从其他网站上下了一个不用安装的绿色版;导致后面的格式化设置一直提示找不到clang,哪怕我手动安装了LLVM并把它加入到环境变量,能在win10的cmd下正常执行,但vscode还是一直提示找不到;
重启电脑+卸载并重装插件+重装vscode,也都解决不了这个问题(dog head),一整天的时间都浪费在不同的尝试上;甚至尝试了下载插件后手动安装,也都没有解决这个问题;
2.Vscode插件
Atom one dark thme 界面主题
Batter comments 注释
Bracket pair colorizer 括号高亮色彩
c/c++ 语法提示
Chinese 中文
Cmake cmake语法
Cmake tools cmake扩展包
Path intellisense 路径提醒
Surround 添加标签
TODO highlitht todo高亮
Visual studio intellicode 语法提示
Tabinne autocomplete ai 语法提示(基于过往记录)
Vscode-fileheader 头文件签名
Korofileheader 函数注释
Remote ssh 远程ssh连接
Remote wsl 连接linux
Remote containers
Remote development
3.Vscode和docker连接
服务端-docker容器: yum install -y openssh-server
在此之前,已在docker上安装了
cmake3:
yum install -y cmake3
gcc:
sudo yum install centos-release-scl centos-release-scl-rh
sudo yum install -y scl-utils*
sudo yum -y install llvm-toolset-7 devtoolset-8-gcc*
scl enable devtoolset-8 bash 或者 source /opt/rh/devtoolset-8/enable
which gcc
gcc –version
1)修改docker容器的ssh访问
A、vi服务器端的/etc/ssh/sshd_config
B、把PasswordAuthentication设成yes
C、找到#PermitRootLogin no将其修改为PermitRootLogin yes
2)systemctl restart sshd
3)win10下验证是否可以连接到docker
ssh xxx@xxx.xxx.xxx.xxx -p yyyyy
对于我来说,就是 ssh root@127.0.0.1 -p 11001 , 这里的11001是docker上的映射端口号
4. Vscode连接linux容器
双击vscode左侧的 “远程资源管理器”(下图中的步骤1),然后点击“+”(步骤2)创建配置文件,例如:
设置config文件:
并输入文档中的内容:
Host 127.0.0.1
HostName 127.0.0.1
Port 11001
User root
【这里可以配置多个链接的】
之后双击,然后输入密码,即可连接到docker上;
在vscode上通过docker内的路径来寻找并打开相应的项目:以文件夹为单位打开;
.clang-format(编码规范脚本,在项目的根目录下)
可根据自己的需要进行相应的修改,某些修改可能还需要在vscode的设置里进行相应的设置,具体选项的设置,待遇到问题后搜索即可;比如我就因为使用vscode的绿色免安装版,导致格式化设置一起不起作用,哪怕修改了vscode里的很多选项;这些小坑还是需要注意的;
---
Language: Cpp
BasedOnStyle: Google
DerivePointerAlignment: false
PointerAlignment: Left
BinPackArguments: false
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortFunctionsOnASingleLine: None
ContinuationIndentWidth: 2
ConstructorInitializerIndentWidth: 2
...
断点调试
生成 .vscode 文件夹
直接点击vscode左侧的调试按钮,就会在项目工程的根目录下生成 .vscode 文件夹,下面的文件有: extensions.json launch.json settings.json tasks.json
launch.json配置
内容如下,部分内容需要根据项目或者本地设置来进行修改:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/tcp_filter", // 需要修改-调试可执行程序的路径
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",// 需要修改-gdb的路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "make"
}
]
}
tasks.json配置
内容如下,部分内容需要根据项目或者本地设置来进行修改(eg:command对应的部分):
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "make",
"type": "shell",
"command": "make", //sh build.sh
"group": { //group表示‘组’,我们可以有很多的task,然后把他们放在一个‘组’里
"kind": "build", //表示这一组任务类型是构建
"isDefault": true //表示这个任务是当前这组任务中的默认任务
},
}
]
}
extensions.json配置
{
"recommendations": [
"xaver.clang-format",
"ms-vscode.cpptools"
]
}
注意
在后续的其他项目的调试过程中,发现一个小坑,就是如果想通过vscode来远程调试docker中映射在本地的工程,那么在打开文件建立工程的时候,不能直接在windows下打开文件,而应该在docker的linux目录下输入相应的目录来打开文件建立工程,否则vscode会认为这是一个windows下的工程,那么在搜索gdb的时候,就会在windows目录下寻找,而不是在docker的linux下寻找;
总结
1、一个小坑可能需要折腾一天甚至更久,并且网上没有符合要求的解决方案,比如说我这次遇到的vscode绿色免安装版导致的问题;
2、每一个问题尽量明白原因,然后再去做相应的解决尝试;实在没招了,再去乱拳打死老师傅的尝试;