2016-07-05 1 views
0

Я пытаюсь скомпилировать проект ROS с участием catkin_make. Проект включает в себя, среди прочего, инструмент для преобразования матриц opencv в матрицы ros под названием cv_bridge. Однако, при попытке скомпилировать мой catkin_ws Я получаю следующее сообщение об ошибке:Невозможно указать библиотеки ссылок для целевой страницы «cv_bridge-utest» Ошибка компиляции ROS

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, но, возможно, он пытается скомпилировать папку в неправильном порядке ...

ответ

0

Я не знаю, что вы написали в своих 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 Если вы правильно создали свое рабочее пространство, оно должно компилироваться без ошибок.

+0

На самом деле я предполагаю, что мой пакет cv_bridge может быть поврежден. Мне нужно использовать OpenCV 3.0.0, который я скомпилировал локально и который отличается от моей системы OpenCV. Поэтому я попытался изменить все «CMakeLists.txt» таким образом, чтобы они указывали на локально установленный opencv. Однако я думаю, что cv_bridge все еще видит глобальную версию opencv (2.4.8 -> версия Ubuntu 14.04 по умолчанию). Можно ли переустановить cv_bridge и указать его на мою локальную версию opencv? – mcExchange

+0

Я установил 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; ' – Fabiobreo

+0

Похоже, что моя установка ROS сломана, и я не могу ее восстановить. 'E: Невозможно исправить проблемы, у вас были сломанные пакеты ... Однако вещи компилируются на виртуальной машине. Спасибо, в любом случае – mcExchange