【问题标题】:Cannot specify link libraries for target "cv_bridge-utest" ROS compilation error无法为目标“cv_bridge-utest”ROS 编译错误指定链接库
【发布时间】:2016-07-06 00:57:11
【问题描述】:

我正在尝试编译一个涉及catkin_make 的 ROS 项目。该项目包括 - 除其他外 - 一个将 opencv 矩阵转换为 ros 矩阵的工具,称为cv_bridge。但是,在尝试编译我的 catkin_ws 时,出现以下错误:

CMake Error at cv_bridge/test/CMakeLists.txt:7 (target_link_libraries):
  Cannot specify link libraries for target "cv_bridge-utest" which is not
  built by this project.

有人知道这个错误吗?我对 ROS 很陌生,所以我不确定如何告诉 ROS 编译整个 catkin_ws/src 目录。在后一个文件夹中,所有必要的文件夹都应该存在。还有catkin_ws/src/cv_bridge,但它可能会尝试以错误的顺序编译文件夹...

【问题讨论】:

    标签: opencv ros


    【解决方案1】:

    我不知道你在 CMakeLists 中写了什么。假设错误在那里,您可以像这样使用 CMakeLists.txt:

    cmake_minimum_required(VERSION 2.8.3)
    project(your_project)
    
    find_package(catkin REQUIRED COMPONENTS
      roscpp
      rospy
      std_msgs
      cv_bridge
    )
    
    find_package(OpenCV REQUIRED)
    
    ###########
    ## Build ##
    ###########
    
    catkin_package()
    
    include_directories(
      ${catkin_INCLUDE_DIRS}
      ${OpenCV_INCLUDE_DIRS}
      include
    )
    
    
    add_executable(executable src/your_file.cpp)
    target_link_libraries(executable ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})
    

    在你的 package.xml 添加这些行:

      <build_depend>opencv2</build_depend>
      <build_depend>cv_bridge</build_depend>
    
      <run_depend>opencv2</run_depend>
      <run_depend>cv_bridge</run_depend>
    

    要编译文件夹,您只需进入 catkin 目录并输入:catkin_make 如果您以正确的方式构建了您的工作区,它应该可以正确编译。

    【讨论】:

    • 其实我猜我的 cv_bridge 包可能已经损坏了。我需要使用我在本地编译的 OpenCV 3.0.0,它与我的系统 OpenCV 不同。所以我尝试修改所有CMakeLists.txt,使它们指向本地安装的opencv。但是我猜 cv_bridge 仍然看到全局 opencv 版本(2.4.8 --> Ubuntu 14.04 的默认版本)。我可以重新安装 cv_bridge 并将其指向我的本地版本的 opencv 吗?
    • 我安装了 cv_bridge 在我的终端输入这个:cd ~/Downloads/ ; wget https://github.com/Itseez/opencv/archive/2.4.12.zip -O opencv_2.4.12.zip ; unzip opencv_2.4.12.zip ; mv opencv-2.4.12 ~/workspace/opencv ; cd ~/workspace/opencv ; mkdir build ; cd build ; cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_OPENCL=OFF .. ; make -j 8 ; sudo make install;
    • 好像我的 ROS 安装坏了,我无法恢复它。 E: Unable to correct problems, you have held broken packages ... 但是事情正在虚拟机中编译。还是谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2020-11-30
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多