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)
- 完整错误调用链路:
/usr/share/cmake-3.20/Modules/FindPackageHandleStandardArgs.cmake第594行触发依赖查找失败的提示流程- 流程追溯到
/usr/share/cmake-3.20/Modules/FindProtobuf.cmake第646行的FIND_PACKAGE_HANDLE_STANDARD_ARGS逻辑 - 上层调用源为
/usr/lib/x86_64-linux-gnu/cmake/gazebo/gazebo-config.cmake第114行的依赖查找动作 - 最终触发
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配置流程未完成,详细错误日志可参考
- 问题关联触发场景:将CMake升级到3.20版本后首次执行
catkin_make
适配Ubuntu新手的分步解决操作
- 优先修复导致构建中断的Protobuf依赖缺失问题
- 执行依赖安装命令,拉取Protobuf的开发头文件与编译工具:
sudo apt update && sudo apt install libprotobuf-dev protobuf-compiler - 清空catkin工作空间的旧构建缓存,避免历史配置干扰新的依赖查找流程:
rm -rf ~/catkin_ws/build ~/catkin_ws/devel - 重新执行
catkin_make指令,验证Protobuf查找失败的问题是否解决
- 执行依赖安装命令,拉取Protobuf的开发头文件与编译工具:
- 处理非阻断的CMake弃用警告(可选操作,不影响正常构建流程)
- 打开报错对应的
gazebo_tutorials/CMakeLists.txt文件,将第1行的低版本cmake_minimum_required配置,替换为适配当前CMake版本的兼容写法,例如:cmake_minimum_required(VERSION 3.10...3.20) - 调整完成后重新执行构建,对应弃用警告会自动消失
- 打开报错对应的
- 若安装Protobuf依赖后仍报头文件找不到的异常
- 执行
catkin_make时手动传入Protobuf头文件路径参数,跳过CMake的自动查找逻辑:catkin_make -DProtobuf_INCLUDE_DIR=/usr/include/google/protobuf
- 执行
内容的提问来源于stack exchange,提问作者Ashwin
相关产品推荐
相关产品推荐

