189 字
1 分钟
【踩坑】在vscode中使用clang-tidy

在vscode中使用clang-tidy#

在vscode中进行ros开发的时候发现,ros noetic使用catkin build -DCMAKE_EXPORT_COMPILE_COMMANDS=YES编译ros包时,编译器会将每个包的compile_commands.json文件放到build下不同包的目录下:build/<package-name>/compile_commands.json。让clangd无法正确找到compile_commands.json导致检查出错。

解决方案是使用是将各个包的compile_commands.json合并到目录的compile_commands.json下。

在ros包的根目录下:

Terminal window
find build -name compile_commands.json -exec cat {} \; | \
jq -s 'add' > compile_commands.json

如果没有 jq 可以进行安装:

Terminal window
sudo apt install jq

最后在项目目录下创建.vscode/settings.json,进行如下配置:

{
"clangd.arguments": [
"--compile-commands-dir=${workspaceFolder}/<ros包根目录相对路径>",
"--background-index",
"--clang-tidy",
"--completion-style=detailed",
"--header-insertion=never"
]
}
TIP

可以通过配置catkin行为让其每次都自动生成compile_commands.json文件:

Terminal window
catkin config --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
【踩坑】在vscode中使用clang-tidy
http://onemom.top/posts/vscode_clangd/
作者
onemotre
发布于
2025-11-25
许可协议
CC BY-NC-SA 4.0