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 - SSH
Remote 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 | ... |