VSCode ROS 开发指南 (Clang)
在 VSCode 中的 “C/C++” 插件(此插件默认与 ROS 官方插件搭配)在开发 ROS(C++)上实在显得力不从心。你可能会遇到以下情况:
-
糟糕的头文件索引(CMakeList 写明了各种库,而你还需要在
cpp_configuration
中添加路径来为 C/C++ 插件提供索引。 -
由于没有良好的索引,静态代码检查完全无法工作
-
完全没有用的 “quick-fix” 只能傻傻的提示一下可能的错误
所以为了提升自己开发 C++ 的体验和节约开发时间,更加推荐使用 clang + clangd 配合 VSC 插件进行开发。
安装 clang/clangd “后端”
以 ubuntu 18.04 作为示例,安装可分为以下几步。
-
安装 clang
这步并不麻烦,打开终端输入:
-
安装 clangd
由于 ubuntu 默认的软件源貌似没有提供 clangd 的最新二进制包,只能退而求其次安装 clangd 10。(截至写作时 clangd 的最新版本是 clangd 16)
VSCode 所使用的 “clangd” 插件默认寻找 “clangd” 可执行文件,而刚刚安装的是
clang-10
。
这会导致 “clangd” 插件尝试去 llvm 官网下载最新二进制包,对于我们来说是不必要的。因此创建一个软链接将clangd-10
导向clangd
即可。 -
安装 clang-format
这步不是必选,但是安装这个后可以在 VSC 中使用 clang 的代码格式化。
-
配置 clang-format
同样地,这一步也是可选的。 在项目根目录下添加
.clang-format
文件,并修改为以下内容。这是一份基于 Goolgle 代码规范的格式化标准,做了有关括号位置和缩进大小的自定义修改。你可以在这里查阅到关于
clang-format
的所有设置选项。
安装 VSCode 插件
安装以下插件,括号里面的是作者名称,不要下载到错误的插件。
-
clangd (LLVM)
-
【可选】Clang-Format (Xaver Hellauer)
-
CMake (twxs)
clangd 设置
在 VSCode 插件中找到 clangd 插件的设置,在“Clangd: Arguments” 中添加:--compile-commands-dir=${workspaceFolder}/build
此配置将会指明编译后文件的存放路径。
在工作空间下执行:catkin config --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
,来设置空间的编译参数。
接着使用 catkin build
编译一下。
如果使用 “catkin_make” 则可以在每次使用时加上 “-DCMAKE_EXPORT_COMPILE_COMMANDS=1”即:
catkin_make -DCMAKE_EXPORT_COMPILE_COMMANDS=1
来直接在build/
下生成compile_commands.json
若 build/
目录下没有 compile_commands.json
文件,而分散在各包名目录下,则可以使用这里的 shell 脚本来合并。
此操作在依赖不变的情况下,仅需进行一次。
结语
这样就可以愉快的使用 clangd 的特性进行 ROS 开发了。
参考链接
【1】https://blog.csdn.net/weixin_43862847/article/details/119274382
【2】https://zhuanlan.zhihu.com/p/514541589
【3】https://blog.csdn.net/m0_38144614/article/details/116986927
【4】https://github.com/catkin/catkin_tools/issues/551