安装LLVM全家桶及CMAKE
输入以下命令,安装clang,clangd,lldb及cmake。
sudo apt install clang clangd lldb cmake
yukeyang@DESKTOP-QFK2F47:~/myfiles/test$ sudo apt install clang clangd lldb cmake
[sudo] password for yukeyang:
Reading package lists... Done
Building dependency tree
Reading state information... Done
cmake is already the newest version (3.16.3-1ubuntu1.20.04.1).
The following additional packages will be installed:
binfmt-support clang-10 clangd-10 cpp-9 g++-9 gcc-10-base gcc-9 gcc-9-base gfortran-9 lib32gcc-s1 lib32stdc++6 libasan5 libatomic1 libc-dev-bin libc6 libc6-dev libc6-i386 libcc1-0 libclang-common-10-dev
libclang-cpp10 libgc1c2 libgcc-9-dev libgcc-s1 libgfortran-9-dev libgfortran5 libgomp1 libitm1 liblldb-10 liblsan0 libncurses-dev libncurses6 libncursesw6 libobjc-9-dev libobjc4 libomp-10-dev libomp5-10 libpfm4
libquadmath0 libstdc++-9-dev libstdc++6 libtinfo-dev libtinfo6 libtsan0 libubsan1 libz3-4 libz3-dev lldb-10 llvm-10 llvm-10-dev llvm-10-runtime llvm-10-tools python3-lldb-10
Suggested packages:
clang-10-doc gcc-9-locales g++-9-multilib gcc-9-doc gcc-9-multilib gfortran-9-multilib gfortran-9-doc glibc-doc ncurses-doc libomp-10-doc libstdc++-9-doc llvm-10-doc
The following NEW packages will be installed:
binfmt-support clang clang-10 clangd clangd-10 lib32gcc-s1 lib32stdc++6 libc6-i386 libclang-common-10-dev libclang-cpp10 libgc1c2 liblldb-10 libncurses-dev libobjc-9-dev libobjc4 libomp-10-dev libomp5-10 libpfm4
libtinfo-dev libz3-4 libz3-dev lldb lldb-10 llvm-10 llvm-10-dev llvm-10-runtime llvm-10-tools python3-lldb-10
The following packages will be upgraded:
cpp-9 g++-9 gcc-10-base gcc-9 gcc-9-base gfortran-9 libasan5 libatomic1 libc-dev-bin libc6 libc6-dev libcc1-0 libgcc-9-dev libgcc-s1 libgfortran-9-dev libgfortran5 libgomp1 libitm1 liblsan0 libncurses6
libncursesw6 libquadmath0 libstdc++-9-dev libstdc++6 libtinfo6 libtsan0 libubsan1
27 upgraded, 28 newly installed, 0 to remove and 718 not upgraded.
Need to get 115 MB of archives.
After this operation, 421 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal-updates/main amd64 libc6-dev amd64 2.31-0ubuntu9.14 [2,519 kB]
...
安装vscode插件
安装以下vscode插件(CMake, CMake Tools, CodeLLDB, clangd)
其中CodeLLDB需要下载一个文件,几乎是一定会下载失败的。
超时之后点击弹出来的消息,手动下载,然后再手动进行安装。
开始
随便找一个空文件夹打开,然后Ctrl+Shift+P或者你自定义的快捷键打开下拉菜单,搜索cmake,选择Quick Start:
给你的项目起个名字,类型选择Executable,第一次打开cmake可能还会问你一些编译套件的选择问题,选择clang即可,记得看清楚后缀免得用错。
clangd报警无法找到编译数据库。
而这个数据库其实就在cmake生成的build文件夹里。
我们要让clangd识别项目的编译数据库,因此我们设置clangd参数。打开设置,搜索clangd,在Arguments配置项中输入参数–compile-commands-dir=${workspaceFolder}/build,然后点确定。
这个参数就是告知clangd我们的编译数据库在工作区根目录的build文件夹下。
重启VSCode,再次查看clangd输出,发现成功读入了参数,并且没有报错信息,同时能够使用cmake输入的编译指令即为配置成功。
运行与调试
按一下底部菜单中的build键,看看我们生成的可执行文件在哪里(一般就在build下面):
按F5键,VSCode会报错,同时在根目录下生成一个.vscode文件夹以及launch.json。打开这个json文件,将其中唯一一个需要我们配置的(也是本文第二次跟配置文件打交道)program项改为cmake生成的可执行文件的位置(按照惯例,根目录的名字和项目的名字应该是同一个,否则就需要手动指定)。
再按一次F5,终端返回了一句亲切的Hello, from select!。
上个断点试试:
至此,已经搭建起了一个简单的开发环境并且开始快乐地写代码了。
参考文献
[1] 几乎无痛的VSCode+clangd+lldb+cmake配置C/C++开发环境指南