You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于现有ROS安装创建CMake伪目标以跳过clang-tidy冗余检查

结论

该方案完全可行,是处于ROS依赖剥离过渡阶段项目的标准处理方案。

具体实现逻辑

你可以通过CMake的INTERFACE类型导入目标实现这个伪ROS目标,同时配合系统头文件标记,双重保证clang-tidy跳过ROS代码检查:

  1. 先创建全局的伪ROS头文件目标,将ROS头文件路径关联到该目标,同时标记为系统头文件:
# 创建全局导入型伪ROS目标
add_library(ros_foxy INTERFACE IMPORTED GLOBAL)
set_target_properties(ros_foxy PROPERTIES
  # 关联ROS头文件路径
  INTERFACE_INCLUDE_DIRECTORIES "/opt/ros/foxy/include/"
  # 标记为系统头文件,clang-tidy默认不会检查系统路径下的代码
  INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "/opt/ros/foxy/include/"
  # 显式禁用该目标的clang-tidy检查,双重保险
  CXX_CLANG_TIDY ""
)
  1. 替换原有硬编码头文件路径的写法,改为依赖上面创建的伪目标:
# 替换原来直接写/opt/ros/foxy/include/的配置
target_link_libraries(${LIBRARY} PRIVATE ros_foxy)

额外优势

这种写法除了能解决clang-tidy的检查问题外,也刚好适配你当前逐步移除ROS依赖的需求:后续要完全砍掉ROS依赖时,只需要删除ros_foxy目标的定义以及对应链接逻辑即可,不需要全局搜索替换硬编码的ROS路径,改造成本极低。

可选极简替代方案

如果你不需要统一管理ROS依赖,也可以直接给原来的头文件路径加SYSTEM关键字,不需要创建伪目标也能实现跳过检查:

target_include_directories(${LIBRARY} SYSTEM PRIVATE
 /opt/ros/foxy/include/
)

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:24:03