注: linux系统是 CentOS 9 Stream
安装VS Code
下载VS Code
-
进入VS Code官网,点击“Other platforms”
-
我们需要在Windows的平台下使用VS Code,因此需要下载Window的.zip x64版本
-
将下载的VS Code包解压到合适位置
VS Code配置
-
进入到VS Code包解压目录,找到Code.exe,双击启动 VS Code
-
安装插件
- C/C++(本地机器不需要可以不安装, 远程机需要安装)
在搜索框中输入C/C++,选择微软提供的 C/C++ 插件 - Remote ssh(本地机器需要安装)
在搜索框中输入ssh,选择微软提供的 Remote ssh 插件 - xmake(本地机器不需要可以不安装,远程机需要安装)
在搜索框中输入xmake
- C/C++(本地机器不需要可以不安装, 远程机需要安装)
-
安装完成后如下图示
安装完成后请 重启VS Code
VS Code 远程linux
-
安装完Remote ssh,在VS Code上看到两个图标(如下图标记1和标记2)
-
点击上图的标记2,在弹出的命令面板中点击“Connect to Host…”
添加一个新SSH主机,选择“+ Add New SSH Host…”
参考E.g ssh hello@ip(或域名) -A,输入要远程的主机用户名和主机ip(或域名)
不要忘记 -A 参数
设置举例,如下图所示
然后点击“回车”,选择SSH配置的存储位置(一般放在~/.ssh)
-
刚配置完成后会在右下角弹出“打开配置和链接的对话框”,不查看配置点击“Connect”。
打开配置,如下图所示
点击配置后就没有链接,要链接远端主机可以点击前面的标记2,再次选择“Connect to Host…”
-
链接远端主机,需要在下图的标记1处输入选择用户的密码
链接成功后会启动一个新的VS Code,如果远端主机没有安装过VS Code,会为远端主机安装VS Code服务,如下图所示,这需要等一会 -
链接成功后,会显示链接的远程主机, 如下图所示
安装编程环境
检查环境
-
在VS Code(链接远程主机)中点击新建终端
在终端的标题栏点击最大化,这样可以看到更多内容(方便查看远程主机更多信息),再次点击就还原面板。
-
检查一下git, gcc, g++, gdb, xmake是否安装
可以看到远端主机都没有安装,那么接下来开始安装编程环境。
安装git
输入下面的命令(普通用户需要输入管理员密码),下一步到底
sudo yum install git
查看git的版本
git --version
安装C/C++
输入下面的命令,下一步到底
sudo yum install gcc-c++
查看gcc和g++的版本
gcc --version
安装gdb调试器
输入下面的命令,下一步到底
sudo yum install gdb
查看gdb的版本
gdb --version
安装xmake
-
根据个人规划目录,将xmake_install.sh下载到适合的目录(不需要可以直接跳过这一步),在用户目录下创建 dev并进入到dev目录
mkdir dev cd dev
-
下载xmake安装脚本
curl -L https://xmake.io/shget.text -o xmake_install.sh
-
给予执行权限
chmod +x xmake_install.sh
-
运行安装脚本
./xmake_install.sh
输入xmake命令查看xmake运行环境
xmake --version
-
执行xmake创建一个hellow工程
xmake create hellow
查看hellow目录树
cd hellow tree
构建hellow项目
xmake
运行hellow
xmake run
可以看到通过命令的方式成功构建一个C++项目。
切换调试模式xmake f -m debug
构建调试版本
xmake
运行调试
xmake run -d
如果报告error: debugger not found!说明没有安装调试器,参考安装gdb。
安装完gdb后关闭VS Code重新链接
先清理一下配置,重新配置调试模式、构建、在执行调试模式
在调试模式下输入 r 会提示
"This GDB supports auto-downloading debuginfo from the following URLs:" "<https://debuginfod.centos.org/>"
输入 y 下载并安装相关的文件。
再次按r进行调试,只是这个程序没有打断点。
配置远程VS Code插件环境
在远程的VS Code中安装
- C/C++
在搜索框中输入C/C++,选择微软提供的 C/C++ 插件,参考下面的xmake进行远程安装。 - xmake
在搜索框中输入xmake
安装完成如下图所示
编写代码和编译、调试
前面的工作准备完成后,那么在VS Code中进行编写代码、编译和调试。
创建一个VS Code的工作文件夹
-
在终端创建 example_vsxmake 文件夹,用于VS Code的工作文件夹
mkdir example_vsxmake
进入到 example_vsxmake 文件夹, 通过 pwd 命令查看文件夹的绝对路径
cd example_vsxmake pwd
-
在VS Code中点击“Open Folder”,命令面板中输入新建 example_vsxmake 文件夹的绝对路径, 然后点击“Ok”
在命令面板中输入远程主机的密码
在弹出对话框勾选“trust the authors of all fiels in the parent folder ‘shiyan’”,点击"Yes, I trust the authors"
创建工程、修改代码、打断点、调试
-
在命令面板中通过xmake插件创建工程,如下图所示
选择"c++" -> “console”(这里就不在记录,同本地VS Code使用xmake一样)
-
打开 src/main.cpp,右下角弹出安装"C/C++ Extension",选择“Install”即可
修改代码如下
#include <iostream> int main(int argc, char** argv) { std::cout << "hello world!" << std::endl; for (size_t i = 0; i < 10; i++) { std::cout << "i = " << i << std::endl; } return 0; }
-
在 src/main.cpp 文件的第5行按下 F9 打断点
-
构建调试
确保标记1是 debug, 点击标记2的 build 进行构建
-
调试
点击下图的调试按钮或按下快捷键 F5 启动调试
如下图所示,已经停在断点处,右侧可以看到变量、调用堆栈等信息
-
执行调试
按下 F10 执行单步调试(默认同Vistual Studio 2022)
在终端可以看到打印输出。
-
在 DEBUG CONSOLE 窗口可以看到调试信息
配置版本管理
git
-
配置用户
git config --global user.name "用户"
-
配置邮箱
git config --global user.email "邮箱地址"
配置信息是记录当前用户的(如果只想为某个特定的仓库设置用户名和邮箱,可以去掉–global标志,并在该仓库的目录下运行上述命令)
~.gitconfig
-
安装git插件
- git graph
在搜索框中输入git graph - git history
在搜索框中输入git graph
安装完成后如下图所示
- git graph
-
生成ssh密钥
ssh-keygen -t ed25519 -C 'xx.lux@lux.com'
-
将~.ssh/文件下的id_ed25519.pub的内容部署到gitcode、gitee、github、gitlab、gitea等版本服务器上。
参考gitee的添加部署公钥部分。
本文以gitlab为例-
登录gitlab
-
点击头像,选择“偏好设置”
-
然后点击“SSH”->“添加密钥”,粘入拷贝的公钥
-
-
下载代码
-
在VS Code中选择“Clone Repository”,弹出的命令面板中粘贴git的ssh路径(可先规划好下载的路径)
-
选择下载的路径,点击“OK”
-
弹出的对话框,点击“Open”打开下载的代码文件夹
-
输入远程主机用户的密码
-
然后“回车”确认,可以看到打开代码文件夹,在终端中输入 pwd 查看代码的绝对路径
-
-
查看git日志。这里只是简单演示一下,通过界面操作(不需要git命令行的方式)就可以完成git相关的操作。
-
通过 Xmake 命令面板或 工具栏 编译代码
配置clang相关
注: 本操作是windows上的. linux就不写了,应该差不多,后面遇到坑在补充。
clangd插件
clangd插件容易安装,依赖clangd.exe在github上,自动下载不稳定,会经常失败,多尝试几次或找找其他博客说明。
安装完clangd,会自动提示是否禁用 C_Cpp.intelliSenseEngine 和安装(指定)clangd 工具。也可以手动禁用通过修改 C:\Users\xx\AppData\Roaming\Code\User\settings.json 文件
// 配置 clangd.exe 工具
"clangd.path": "c:\\Users\\xx\\AppData\\Roaming\\Code\\User\\globalStorage\\llvm-vs-code-extensions.vscode-clangd\\install\\18.1.3\\clangd_18.1.3\\bin\\clangd.exe",
"C_Cpp.intelliSenseEngine": "disabled", // 主要是这句, 只禁用C_Cpp的这一个功能就好了
下面是重点
禁用后 foo.h 和 FXXDateTime 显示波浪线和大白色了。
clang的配置文件 compile_commands.json 在 .vscode 文件夹下, (((φ(◎ロ◎;)φ))) 。
把 compile_commands.json 文件放在 build 文件夹就可以了(配置c_cpp_properties.json 中 “compileCommands”: “compile_commands.json” 也没起作用,分析是 因为 C:\Users\xx\AppData\Roaming\Code\User\ settings.json 文件中 C_Cpp.intelliSenseEngine": “disabled” 导致 c_cpp_properties.json 文件都不起作用了, clangd 只需要 compile_commands.json 文件即可 )。
使用 xmake 生成 compile_commands.json 文件到 build 文件夹下
xmake project -k compile_commands --lsp=clangd build
foo.h 没有波浪线了, FXXDateTime 也不是大白色了。
配置Formating
vscode-clang-format github链接
本文档使用的 vs code 版本号是 1.96.2,没有安装如下图所示 clang-format 插件。
通过点击 vs code 中 Manage - Settings
在 User 界面选择 Extensions - C/C++ : Formating ,就看到 C_CPP:Clang_format_style (是安装 clangd 插件带来的还是 vs code 1.96.2 自带的[后面明白了再更新此处)
官网资料
Clang-Format Style Options
参考资料
Clang-Format:代码自动格式化(看这一篇就够了)
vs code 技巧:使用clang-format来格式化代码 - 不回本不改名 - 博客园
-
C_Cpp: Clang_format_fallback Style :当设置clang-format且没有.clang-format文件时,会使用这里选择的默认设置来设置格式。
-
C_Cpp: Clang_format_path:这个是clang-format.exe的绝对路径。C:/Users/xx/.vscode/extensions/ms-vscode.cpptools-1.22.11-win32-x64/LLVM/bin/clang-format.exe
-
C_Cpp: Clang_format_style:这个是.clang-format文件的路径。file:C:/Users/xx.vscode/extensions/ms-vscode.cpptools-1.22.11-win32-x64/LLVM/bin/clang-format。若这里只设置为file,则从当前目录或父目录中的 .clang-format 文件加载样式,若当前目录或父目录中也没有.clang-format则使用C_Cpp: Clang_format_fallback Style中的设置。
C_Cpp: Clang_format_style 设置特定路径的 .clang_format 文件一直没生效(没有使用明白) 。一般来说所有项目的代码风格是一致(设置一次就可以了),也有情况当维护多个来自不同组织的项目代码风格可能存在差异情况,就需要用项目中的代码风格样式,采取保留默认值 file ,在每个项目中有一个 .clang_format 文件(该方式生效)。
在 src(只要是源码的根目录)新建 .clang_format 文件
内容如下
Language: Cpp Standard: Auto ColumnLimit: 120 IndentWidth: 4 #花括号包裹方式 BreakBeforeBraces: Custom BraceWrapping: AfterEnum: true AfterStruct: true AfterFunction : true #对齐方式 AlignConsecutiveAssignments: AcrossEmptyLinesAndComments AlignConsecutiveMacros: Enabled: true AcrossEmptyLines: true AcrossComments: true
在打开的 main.cpp 文件的编辑界面鼠标右键选择 Format Document
效果如下
命令行操作方式
-
查看版本
clang-format --version
-
将 main.cpp 文件格式为 microsoft 代码风格样式
clang-format -style=microsoft -i src/main.cpp
-
将 src 文件夹下所有的 .cpp 文件格式为 google 代码风格样式
clang-format -style=google -i src/*.cpp
-
将 google 代码风格样式输出到 .clang-format 文件中
clang-format -style=google -i -dump-config > /src.clang-format
-
使用 .clang-format 代码风格样式格式 src 文件夹下所有的 .cpp 文件
clang-format --assume-filename=src/.clang-format -i src/*.cpp
配置Vim
两种配置方式
- 在/etc/vimrc 进行设置,这种设置方法会作用与所有登录到Linux环境下的用户。不建议使用。
- 在用户登录的 ~ 目录下创建一个 .vimrc文件,在其中进行自己习惯的编程环境的设置,这样当别的用户使用实并不互相影响。
vimrc文件
-
创建或打开用户目录下的 .vimrc 文件
cd vim .vimrc
-
按下键盘上的 i 键,修改 .vimrc 文件
" set mouse=a " 可以使用鼠标 set nu " 显示行号 set showmode " 设置在命令行界面最下面显示当前模式等 set ruler " 在右下角显示光标所在的行数等信息 set autoindent " 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐 syntax on " 即设置语法检测,当编辑C或者Shell脚本时,关键字会用特殊颜色显示 set ts=4 " 设置 tab 的空格 set softtabstop=4 " 表示在编辑模式的时候按退格键的时候退回缩进的长度,当使用 expandtab 时特别有用 set expandtab " 表示缩进用空格来表示,noexpandtab 则是用制表符表示一个缩进 set shiftwidth=4 " 表示每一级缩进的长度,一般设置成跟 softtabstop 一样 set autoindent " 自动缩进
-
按下键盘上的 esc 键,输入下面命令
:wq
然后回车
配置hosts文件解析域名
如果内网配置了域名又没有DNS服务,通过修改本机的hosts配置域名的ip。
hosts文件的格式如下:
IP地址 主机名/域名
第一部份:网络IP地址;
第二部份:主机名或域名;
第三部份:主机名别名;
编辑host
在终端中输入
sudo vim /etc/hosts
修改域名解析
127.0.0.1 localhost.localdomain localhost
192.168.1.100 test.lux.com test_lux
保存完成即可, CentOS 9 Stream 不需要重启。