catkin:: 解决find_package(catkin) failed.

2023-05-16

背景:

不安装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时自动执行。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

catkin:: 解决find_package(catkin) failed. 的相关文章

  • 为什么我在mongodb中找不到_id的记录

    我试图通过 MongoID id 字段在 mongoDB 中查找记录 我找到了有关如何执行此操作的示例 但无法使其发挥作用 例子 recID 010101010101011 would be a valid mongodb id recID
  • “查找”或任何其他工具可以广度优先搜索文件吗?

    有时我知道某个文件并不那么深 但是非常密集的子目录不允许我轻松找到我想要的文件 Can find http www gnu org software findutils manual html mono find html 或任何其他工具
  • jQuery 调用 find 函数在 Firefox 中给出“格式不正确”错误

    我正在从 XML 文件中检索数据 然后使用 jQuery find 函数来访问该数据 但是 在 Firefox 版本 37 0 2 中 我在 JavaScript 控制台中收到以下错误 Error Unable to run script
  • 查找早于 FILE 的文件而不包含 FILE

    我有一个计划要使用find给我一个比某些 FILE 更旧的文件列表 然后使用xargs or exec 将文件移动到其他地方 搬东西不是问题 xargs mv trash工作正常 现在 如果我尝试使用 newer FILE then FIL
  • Python 中的 MATLAB 风格的 find() 函数

    在 MATLAB 中 很容易找到满足特定条件的值的索引 gt gt a 1 2 3 1 2 3 1 2 3 gt gt find a gt 2 find the indecies where this condition is true 3
  • 浏览器Ctrl+F查找不可见文本

    Can the browser feature of Ctrl F to find text be integrated with text in popup windows I d like to have some scientific
  • 检测“位图中”的形状

    所以 在为下一场 ieextreme 比赛做准备时 我遇到了一些过去的问题 我发现一个真正困扰我的问题 因为我不知道该怎么做 我可能可以使用一些 300 行的暴力代码来实现它 但我我认为这不是在这样的比赛中应该做的事情 所以我需要你的帮助
  • sensio/framework-extra-bundle 包已被放弃

    当我想将 symfony 从 6 1 升级到 6 2 时 我看到了这条消息 Package sensio framework extra bundle is abandoned you should avoid using it Use S
  • 这是一个有效的 java 包名称吗? [复制]

    这个问题在这里已经有答案了 可能的重复 您在 Java 中的个人 爱好项目中使用什么包命名约定 https stackoverflow com questions 292169 what package naming convention
  • 使用 VBA 选择“查找”的第二个结果

    我正在努力做到这一点 以便我可以找到 lights 的第二个结果 以防该术语出现各种情况 下面的代码查找所考虑范围内的第一个匹配项 Dim ws As Worksheet Dim rng1 As Range Dim y As Range C
  • 使用“-prune”时,从“find”命令中省略“-print”

    我一直无法完全理解 find 命令的 prune 操作 但实际上 至少我的一些误解源于省略 print 表达的影响 从 查找 手册页 如果表达式除 prune 之外不包含任何操作 则对表达式为 true 的所有文件执行 print 我一直
  • “私人套餐”是什么意思? [复制]

    这个问题在这里已经有答案了 请看示例 private package com xm aws import static com xml aws PcgTest test public class PackageTest public sta
  • 如何在 OSX .pkg 中设置背景图像?

    我正在为我的 OSX 应用程序创建一个 pkg 安装程序 但我无法弄清楚如何设置背景图像 我在构建脚本中创建安装程序 如下所示 pkgbuild root APP FOLDER identifier com company product
  • r-base 和 r-推荐包之间的区别

    谁能告诉我基本包和推荐包之间有什么区别 如果有提到基本包和推荐包的链接 请提供链接 差异实际上来自 R Core 和 R 代码的组织方式 例如在上游 SVN 存储库中 In src library 您拥有所有 基本 包 base 编译器 数
  • 查找-exec选项

    比如说 我想找到一些文件并执行 chmod 并使用另一个命令对其执行某些操作 例如 find name txt exec chmod 666 cp dst it says find missing argument to exec 我该如何
  • 打包用来部署跨平台?

    在 Windows 上 应用程序通常打包为 MSI 在 Redhat Linux 上打包为 RPM 可用于将应用程序部署到所有平台 包括不同风格的 UNIX 和 Windows 的最佳开源打包方法是什么 内容包括 exe unix 二进制文
  • matlab矩阵中求子矩阵的通用方法

    我正在寻找一种 好 方法来在更大的矩阵 任意维数 中找到矩阵 模式 Example total rand 3 4 5 sub total 2 3 1 3 3 4 现在我希望这样的事情发生 loc matrixFind total sub 在
  • 在 Dart 中查找和替换字符串

    我正在为这个应用程序使用 flutter 但我在应用程序的逻辑方面遇到了问题 任何帮助深表感谢 应用程序目标 通过以下方式将所有输入缩写解码 替换 为单词 用户通过文本框输入文本 应用程序查找任何缩写 几个 并仅用文本替换缩写 我能够使用一
  • 导入错误:无法导入名称“IntEnum”

    我正在尝试安装upstox 这是一个用于连接市场数据的 Python API 我无法在Python3 5上安装它 我的配置是Python 3 5 3 v3 5 3 1880cb95a742 Jan 16 2017 15 51 26 MSC
  • R:install.packages 中出现错误:无法打开连接

    我试图安装 RINDSEL 包 但无法安装它 并且不断收到以下错误 install packages 中出错 无法打开连接 我从以下位置下载了该软件包 rindsel 1 0 2 zip 综合养殖平台 http old ibpdev net

随机推荐