1.VsCode环境配置
# Visual Studio Code 安装
这一块应该没什么好细说的,到官网上下载就可以了。
# 虚拟机 安装
我个人的开发环境是,物理机 Windows + 虚拟机 Ubuntu ,因此需要安装一个虚拟机应用。
可以看你个人选择自己喜好的虚拟机应用,例如 VMWare Workstation 或 VirtualBox 。
这里我使用的是 VMWare Workstation 。
# Ubuntu 安装
虚拟机上安装 Ubuntu 的话,网上的教程也很多,也不赘述了,我这里装的是桌面版的。
# 配置 VsCode 的远程开发
我们需要在 Windows 上进行 Linux 下的开发, VsCode 给我们提供了一个很好的方案,使用 SSH 进行远程开发。
# VsCode 扩展
这是 VsCode 中,微软提供的一个扩展。
首先启动 VsCode ,选择 Extensions(Ctrl+Shift+X) 选项卡,搜索 Remote 。
安装 Remote - SSH 扩展:
Remote - SSHRemote Explorer- 会被自动安装
Remote - SSH: Editing Configuration Files- 会被自动安装
# OpenSSH
在 Windows 和 Ubuntu 中都需要安装。
# Windows
在虚拟机中测试了一下,似乎 Windows 10 上已经预置了。
# Ubuntu
Ubuntu 下的安装相当简单:
sudo apt-get install openssh-server
以下命令启动 ssh 服务 :
sudo /etc/init.d/ssh start
以下命令查看 ssh 服务 是否启用:
ps -e|grep ssh
有进程 sshd 在运行就是 ok 了。
# 配置免密登录
我们需要让 Linux端的OpenSSH服务 识别我们的身份,以实现免密登录。
# 生成密钥对
Windows PowerShell 中输入以下命令:
ssh-keygen
随后第一个待输入:
1 | Generating public/private rsa key pair. |
直接回车。
第二个待输入,可以直接回车不设置密码,如果为了安全你也可以设置:
1 | Created directory 'C:\Users\yuyu/.ssh'. |
接下来要求重复输入密码,忽略了密码就继续回车:
1 | Enter same passphrase again: |
完成生成:
1 | +---[RSA 3072]----+ |
接下来在以下用户路径中即可找到生成的公钥和私钥文件:
C:\Users\yuyu\.ssh
其中 yuyu 替换成你自己的用户名。
# 配置公钥
如果你是安装的桌面版 Ubuntu ,就可以很轻松的在 VMWare Workstation 中通过拖动来传输文件。
在 Ubuntu桌面 中打开文件浏览器,会显示在 Home 目录下 (实际路径是 /Home/你的用户名 、 ~ ),按下 Ctrl + H ,即可显示隐藏文件。
可以看到一个目录 .ssh ,进入。
将 Windows 下生成的公钥文件 id_rsa.pub 复制到 Linux 的 .ssh 目录下。
通过以下命令将公钥追加到 authorized_keys 文件中:
1 | cd ~/.ssh |
# VsCode 远程连接
# 查看 ip
Linux终端 下输入:
hostname -I
记下此 ip
# 配置连接目标
回到 VsCode 中,由于我们安装了扩展,侧边选项卡新增了一个图标 ( Remote Explorer )。
选择该选项卡,随后点击 齿轮 按钮。
选择第 1 项:
配置如下:
1 | # Read more about SSH config files: https://linux.die.net/man/5/ssh_config |
将 ip 和用户名 (都是 linux 的) 修改为你的,保存即可。
点击齿轮旁边的刷新按钮,即出现了你添加的主机,开始连接吧!
这里选择 Linux 。
继续。
由于我们配置了免密登录,此时我们成功连接了!
接下来可以打开一个文件夹了,这里我创建了一个 project 的目录来管理我的项目。
至此,我们的远程开发环境就已经配置完毕了。
# 在 VsCode 中构建与调试项目
# CMake
先前我就纠结过是选择 CMake 还是 XMake 来管理项目工程,最后还是选择了 CMake,因为用的人比较多吧,学习一下总不是坏事。
# 安装
Linux终端 输入命令:
sudo apt install cmake
# 资料
这里推荐两篇文章:
1.CMake 保姆级教程(上)
2.CMake 保姆级教程(下)
能够快速上手 CMake 并了解到足够在当前阶段使用的知识。
# VsCode 扩展
C/C++&C/C++ Extension Pack- 语法、浏览、调试等辅助扩展。
C/C++ Themes
` - 非必要,C++ 主题。CMake&CMake Tools- cmake
Native Debug- 调试辅助扩展。
C/C++ Compile Run- 非必要,单文件运行扩展,按 f6 即可直接编译运行当前浏览的源文件。
clangd- 这个和
C/C++是差不多的作用,两个扩展是不能同时启用的 (存在冲突),我尝试了一下还是C/C++更好用一点。
- 这个和
Catppuccin Noctis- 非必要,感觉还行的主题。
Remote - SSH- 远程开发,已经安装了。
# Hello world!
好了,接下来是喜闻乐见的 Hello world 环节。
咱们来学习如何构建和调试项目。
我这里在 VsCode 的远程连接状态中打开目录:
/home/yuyu/project/hello_world
# 编写源代码
新建源文件:
敲上代码:
1 |
|
# 构建
代码是写完了,接下来我们如何构建呢?
我们这里用 CMake 做示例,尽管只有一个文件,杀鸡用牛刀的感觉,但我们真正开发项目自然是需要更加现代的项目管理方式的。
同目录下新建 CMakeLists.txt 文件,输入以下内容:
1 | cmake_minimum_required(VERSION 3.0.0) |
# 构建方法一
在终端中输入:
1 | mkdir build |
# 构建方法二
右键 CMakeLists.txt 文件
1.Configure All Projects
2.Build All Projects
顺利的话都能够看到出现了一个 bin 目录,目录中就有我们编译的文件了。
# 调试
接下来配置调试,让我们的开发体验更贴近 IDE。
菜单栏中选择 Run -> Add Configuration ,在弹出的菜单中选择 GDB :
将此处的 ./bin/executable 修改成 ${workspaceRoot}/bin/hello_world
回到 hello_world.cpp ,在第 4 行处按下 f9 设置断点, f7 编译, f5 运行。
成功断下!
# 附加调试
如果希望附加调试,则使用:
1 | "request":"attach", |
附加可能会出现需要 root 权限的情况, 使用 root 用户登录可以解决此问题。
也可以添加多个配置,在调试选项卡的开始调试框中,可以切换使用哪个配置进行调试。
# F5 自动构建
菜单栏中选择 Terminal -> 配置任务 ,在弹出的菜单中选择 CMake: build :
会创建一个 tasks.json
也可以自己创建,这里贴上我的:
1 | // tasks.json |
- 接下来在 launch.json 添加一行,注意和 task 的 label 保持一致:
1 | "preLaunchTask":"CMake: build" |
# 完整配置示例
- 新版本 vscode 可能变动,这里我这里贴上新版本的配置:
1 | // launch.json |
# GCC 升级至 13.2
由于 Ubuntu22.04 自带的 GCC 版本是 11 的,这里因为个人需要需要升级成 13,特意记录一下。
# 下载 GCC
1 | wget http://ftp.gnu.org/gnu/gcc/gcc-13.2.0/gcc-13.2.0.tar.gz |
# 解压
1 | tar xf gcc-13.2.0.tar.gz |
# 安装组件
1 | cd gcc-13.2.0/ |
# 构建
注意–prefix=/usr/local/gcc-13.2.0 是为了指定安装目录,方便后续切换 gcc 版本。
这里指定路径会有其他问题,比如需要查看 gcc -v 还是 11.4.0,自行解决 。
1 | mkdir build && cd build |
# 安装
1 | sudo make install |
# 更新 C++ 库
不更新的话编译出来的程序会无法运行。
1 | sudo add-apt-repository ppa:ubuntu-toolchain-r/test |
# 查看更新结果
1 | strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX |
以下是新的 C++ 库
1 | ... |