标准C++开发配置
依赖安装
此处的依赖安装命令,仅适用于ArchLinux
系统,其他系统请按照包管理器中的软件包进行安装,此处先将所有依赖列出来:
VSCode
代码编辑器,以及以下插件:
clangd
,使用clangd
作为代码补全、语法检查工具。
clang-format
,使用clang-format
作为代码格式化工具。
C++
,安装它主要是为了使用问题match。
CMake
与CMake Tools
,用于CMake项目的支持。
CodeLLDB
,用于调试。
CMake
与Ninja
,用于编译。(一般系统自带)
VSCode
安装
创建一个工作区
在VSCode
中打开一个文件夹,这个文件夹就是我们的工作区,我们需要在这个文件夹下面编写一些测试用的代码。
VSCode
编辑器设置
- 安装插件
clangd
、C++
、CMake
、CMake Tools
、CodeLLDB
。
- 关闭
C++
的intelliSenseEngine
功能,因为我们要使用clangd
作为补全工具。
ctrl+shift+p
打开命令面板,输入json
, 找到首选项:打开用户设置。
,添加如下配置:
- 配置
clangd
在刚才的json
配置文件中添加如下配置:
clangd.fallbackFlags
: 用于指定clangd
的编译标准。
clangd.arguments
: 用于指定clangd
的参数。
-j=6
: 指定clangd
的线程数。
--background-index
: 后台索引,用于加速补全。
--completion-style=detailed
: 补全风格设置为更为详细
然后,我们新建一个main.cpp
文件,编写一个简单的C++
代码,用来检查我们代码提示是否正确配置。
CMake
编译与调试
我们需要使用CMake Tools
给的快速创建CMake
项目的功能,这样我们就可以使用CMake
来管理我们的项目。
使用ctrl+shift+p
打开命令面板,输入cmake
, 选择CMake: Quick Start
,创建一个可执行的CMake
项目。并根据提示创建一个CMakePresets.json
预设文件。
如果一起正常,我们的项目目录结构应该是这样的:
然后我们需要修改CMakeLists.txt
文件,使其能够生成一个可执行项目。
命令行编译配置
修改CMakePresets.json
文件,使其能够编译我们的代码。注意你的name
字段。
如果配置一切正常,我们通过命令行来进行一个检查。
如果执行正常,我们在out/build/GCC
目录下会生成一个可执行文件。
最后我们删除out
目录,因为后面我们需要验证使用VSCode
的CMake Tools
插件来编译我们的项目。
使用VSCode编译
配置完CMake
之后,我们可以使用VSCode
的CMake Tools
插件来编译我们的项目。但是我们需要修改一下VSCode
的tasks
配置。
使用命令面板输入tasks
,找到任务:打开用户任务
。增加两个tasks
项:
配置完成后,我们使用快捷键ctrl+shift+b
,选择CMake: 配置
,先生成项目,之后再次使用ctrl+shift+b
,选择CMake: 构建
,编译项目。如果一切正常,就会和命令行一样得到可执行文件。
调试配置
使用ctrl+shift+p
打开命令面板,输入json
, 找到首选项:打开用户设置。
,增加一个configurations
项:
这个配置主要是用来配置VSCode
的调试功能,有了这个我们就可以使用F5
进行调试。打上断点后F5
。
番外NDK
编译
想要让一个项目可以输出Android
的so
文件,我们需要使用NDK
来编译我们的项目。如果按照上面的步骤,我们只需要在CMakePresets.json
文件中添加一个预设。
使用VSCode
的CMake
插件,在左侧面板中可以切换预设。
切换预设后,我们可以使用ctrl+shift+b
来编译我们的项目,如果一切正常,我们的项目就会生成so
文件。
远程调试
- 在
Android
设备上安装lldb-server
,并且开启lldb-server
服务。
- 启动
lldb-server
服务
- 配置
VSCode
拓展-自动启动lldb-server
- 编写启动
lldb-server
的脚本
文件名: start-lldb-server.sh
- 编写停止
lldb-server
的脚本
文件名: stop-lldb-server.sh
- 将脚本发送到模拟器
- 编写
VSCode
的tasks.json
增加两个任务:
- 修改
VSCode
的launch
这样,我们想要远程调试的时候,只需要:
- 启动模拟器。
F5
断点调试。
就可以了,非常方便。