You need to enable JavaScript to run this app. Ubuntu CMake3.20下catkin_make缺Protobuf_INCLUDE_DIR报错
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu CMake3.20下catkin_make缺Protobuf_INCLUDE_DIR报错

catkin 工作空间执行 catkin_make 构建报错说明与解决

构建过程输出的全量信息

非阻断性CMake弃用警告

  • 触发位置:gazebo_ros_demos/gazebo_tutorials/CMakeLists.txt 第1行的 cmake_minimum_required 配置项
  • 提示内容:当前使用的CMake版本将逐步移除对2.8.12以下版本的兼容性支持,建议更新该字段的VERSION参数值,或通过...后缀声明项目无需兼容旧版本
  • 构建正常识别的依赖信息:
    • 已识别系统加载的消息生成器列表:gencpp;geneus;genlisp;gennodejs;genpy
    • 已成功匹配Boost库1.58.0版本,满足最低1.40.0的版本要求;识别到的Boost组件包括thread、signals、system、filesystem、program_options、regex、iostreams、date_time、chrono、atomic

导致构建中断的核心错误

  • 错误触发定位:/usr/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake 第230行
  • 核心报错内容:

Could NOT find Protobuf (missing: Protobuf_INCLUDE_DIR)

  • 完整错误调用链路:
    1. /usr/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake 第594行触发依赖查找失败的提示流程
    2. 流程追溯到 /usr/share/cmake-3.20/Modules/FindProtobuf.cmake 第646行的FIND_PACKAGE_HANDLE_STANDARD_ARGS逻辑
    3. 上层调用源为 /usr/lib/x86_64-linux-gnu/cmake/gazebo/gazebo-config.cmake 第114行的依赖查找动作
    4. 最终触发 gazebo_ros_demos/gazebo_tutorials/CMakeLists.txt 第11行的find_package步骤执行失败
  • 构建中断结果:
    • CMake配置流程未完成,详细错误日志可参考 /home/ashwin/catkin_ws/build/CMakeFiles/CMakeOutput.log、/home/ashwin/catkin_ws/build/CMakeFiles/CMakeError.log
    • Makefile中cmake_check_build_system目标的构建规则触发失败,make进程返回错误码1,对应构建流程中断
  • 问题关联触发场景:将CMake升级到3.20版本后首次执行catkin_make

适配Ubuntu新手的分步解决操作

  1. 优先修复导致构建中断的Protobuf依赖缺失问题
    • 执行依赖安装命令,拉取Protobuf的开发头文件与编译工具:sudo apt update && sudo apt install libprotobuf-dev protobuf-compiler
    • 清空catkin工作空间的旧构建缓存,避免历史配置干扰新的依赖查找流程:rm -rf ~/catkin_ws/build ~/catkin_ws/devel
    • 重新执行catkin_make指令,验证Protobuf查找失败的问题是否解决
  2. 处理非阻断的CMake弃用警告(可选操作,不影响正常构建流程)
    • 打开报错对应的gazebo_tutorials/CMakeLists.txt文件,将第1行的低版本cmake_minimum_required配置,替换为适配当前CMake版本的兼容写法,例如:cmake_minimum_required(VERSION 3.10...3.20)
    • 调整完成后重新执行构建,对应弃用警告会自动消失
  3. 若安装Protobuf依赖后仍报头文件找不到的异常
    • 执行catkin_make时手动传入Protobuf头文件路径参数,跳过CMake的自动查找逻辑:catkin_make -DProtobuf_INCLUDE_DIR=/usr/include/google/protobuf

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 08:15:01