C++开发环境搭建
ubuntu24.04搭建开发环境
在ubuntu下,进行C/C++开发需要安装gcc/g++编译器,以及make工具,直接安装build-essential
可以安装相关的构建工具。
1
2
3
sudo apt update
sudo apt upgrade
sudo apt install build-essential
现在很多项目都使用到了cmake工具,还需要安装cmake:
1
sudo apt install cmake
至此,所必须的工具都已安装完成。
ssh远程连接
直接使用终端进行开发会十分不方便,主要还是使用IDE远程SSH连接到服务器进行开发。为了方便SSH远程连接,需要将ssh公钥发送到服务器上。在windows的cmd中输入ssh-keygen
,然后一路回车。最后在当前目录下的.ssh中找到生成的公钥,用记事本打开公钥,把公钥里的内容,粘贴到服务器上的~/.ssh/authorized_keys
中。
这样,进行ssh远程连接就不需要输入用户密码了。
vscode开发插件安装
ssh插件
首先需要安装ssh插件
再配置好ssh后,就可以远程访问服务器了。
1
2
3
Host ubuntu-server
HostName 192.168.25.130
User test
为了更好的开发,需要安装c++相关的插件。这里推荐使用clangd
插件。
clangd插件
clangd
插件的使用需要在远程服务器中安装llvm
。
1
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.0/LLVM-19.1.0-Linux-X64.tar.xz
[!NOTE]
截止目前为止,最新版本是19.1.0
然后解压放到某个公共目录即可。这里我是放在/opt下的。
随后还需要在vscode中配置clangd插件,指定clangd的路径。
1
2
3
{
"clangd.path": "/opt/LLVM-19.1.0-Linux-X64/bin/clangd"
}
[!NOTE]
需要配置到远程服务器上
clangd插件会依赖于compile_commands.json
,这个可以通过cmake来生成。为了方便使用cmake,推荐使用cmake插件
cmake插件
对于某个开源项目,会有若干cmake参数才能正常完成cmake的构建。可以配置cmake参数
1
2
3
4
5
6
7
8
9
{
"cmake.configureArgs": [
"-DCMAKE_INSTALL_PREFIX=~/local",
"-DBUILD_SHARED_LIBS=ON",
"-DTHIRDPARTY=FORCE",
"-DTHIRDPARTY_UPDATE=ON",
"-DCOMPILE_EXAMPLES=ON"
]
}
[!NOTE]
推荐配置到当前项目的工作区中
随后构建,就会在build
目录下生成compile_commands.json
文件,方便clangd插件工作。
[!NOTE]
clangd插件默认情况下会在工作区下生成.cache目录
调试
这里推荐使用CodeLLDB
插件进行代码调试。
CodeLLDB
默认情况下,会调试到汇编代码。需要配置
1
"lldb.showDisassembly": "never",
当项目编译后,需要配置在工作区配置launch.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/<executable file>",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
可以指定program
指定编译好的程序的路径。在args
中也可以指定程序的参数。如果需要配置程序运行环境,可以如下配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/<executable file>",
"args": ["s", "dsfs"],
"cwd": "${workspaceFolder}",
"env": {
"xxxx": "111" // 指定运行参数
}
}
]
}