catkin:: 解决find_package(catkin) failed.

本文介绍了如何在未安装ROS的环境中使用catkin进行项目管理。当cmake..时出现找不到catkin的错误,原因是CMAKE_PREFIX_PATH中缺少.catkin路径。解决方法是通过`locate .catkin`找到.catkin位置,然后添加到CMAKE_PREFIX_PATH环境变量中,或者将其添加到.bashrc文件以自动执行。这样可以避免每次手动设置环境变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

不安装ros的情况下,使用catkin进行项目工程管理。

一种方法是 直接将catkin package放到项目工程中,这样每个工程都要复制一个,太麻烦。

另一种方法是,安装catkin及其依赖项。但可能是ros未安装的原因,cmake .. 时总是找不到catkin,以下是解决方法。

问题描述:

源码make install安装catkin之后,在工程文件中输入指令:

mkdir build 
cd build
cmake ..

报错如下:

解决流程

这个报错来自于最外层CmakeList.txt中最后一段代码:

  # list of catkin workspaces
  set(catkin_search_path "")
  foreach(path ${CMAKE_PREFIX_PATH})
    if(EXISTS "${path}/.catkin")
      list(FIND catkin_search_path ${path} _index)
      if(_index EQUAL -1)
        list(APPEND catkin_search_path ${path})
      endif()
    endif()
  endforeach()

# search for catkin in all workspaces
  set(CATKIN_TOPLEVEL_FIND_PACKAGE TRUE)
  find_package(catkin QUIET
    NO_POLICY_SCOPE
    PATHS ${catkin_search_path}
    NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH)
  unset(CATKIN_TOPLEVEL_FIND_PACKAGE)

  if(NOT catkin_FOUND)
    message(FATAL_ERROR "find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.")
  endif()
endif()

catkin_workspace()

 解决方法也在该段中找到提示:

  foreach(path ${CMAKE_PREFIX_PATH})
    if(EXISTS "${path}/.catkin")

直接原因就是: CMAKE_PREFIX_PATH中未找到 .catkin 

因此,我们只需将 .catkin 的路径添加到CMAKE_PREFIX_PATH中即可。

运行如下指令,查询 .catkin  的位置

locate .catkin

找到如下:

/home/yuan/.local/share/Trash/files/build/devel/.catkin
/usr/local/.catkin

cmake .. 之前先运行如下指令即可解决

export CMAKE_PREFIX_PATH=/home/yuan/.local/share/Trash/files/build/devel:$CMAKE_PREFIX_PATH
或
export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH

进一步的,可以将以上指令复制到 ./.bashrc 中,打开terminal时自动执行。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值