ros catkin_make 出现add_custom_target cannot create target 错误
add_custom_target cannot create target 错误See documentation for policy CMP0002 for more details.解决办法
项目场景:
自己写了一个包A,内部有一个名字为AA的msg定义,此节点发送内容为A的消息。同样的工程下面,另一个包B需要用到AA这个消息内容,并且接收A包发出来的消息内容,使用catkin_make编译的是时候报错
问题描述
catkin_make编译 报错如下:

CMake Error at /home/nvidia/Workspace/controller/RobotMiniControllerAlpha/build/sensor_8SPExpansion_BNode/cmake/sensor_8SPExpansion-genmsg.cmake:46 (add_custom_target):
add_custom_target cannot create target
"sensor_8SPExpansion_generate_messages_cpp" because another target with the
same name already exists. The existing target is a custom target created
in source directory
"/home/nvidia/Workspace/controller/RobotMiniControllerAlpha/src/MCtrlNodeV3".
See documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/melodic/share/genmsg/cmake/genmsg-extras.cmake:307 (include)
sensor_8SPExpansion_BNode/CMakeLists.txt:84 (generate_messages)
但是使用单包节点一个一个编译,就可以编译过去:
编译包A
catkin_make -DCATKIN_WHITELIST_PACKAGES="Aname"
编译包B
catkin_make -DCATKIN_WHITELIST_PACKAGES="Bname"

原因分析:
最后的找到的原因是包的package.xml 中包依赖没有和cmakelist.txt中设置一致
cmakelist.txt:
主要是上面Aname是我自己的一个包,一定要在package.xml中 <build_depend> 里面加上
find_package(catkin REQUIRED COMPONENTS roscpp std_msgs sensor_msgs image_transport Aname )
package.xml:
<build_depend>message_generation</build_depend>
<build_depend>Aname</build_depend>
<build_depend>image_transport</build_depend>
<run_depend>message_runtime</run_depend>
<run_depend>Aname</run_depend>
<run_depend>image_transport</run_depend>
解决方案:
修改包B的package.xml,和cmakelist.txt


编译通过

更多推荐
所有评论(0)