删除CmakeLists.txt中catkin_package()会发生什么?

455 阅读1分钟

大家好,我是倒霉蛋蛋小鱼,今天在尝试跑了一下aubo的机械臂仿真,顺手建了一个ros的包跑moveit。

看着生成的杂乱无章的CmakeLists,小鱼的强迫症癌晚期又发作了

所以就手动的把看起来不顺眼的,感觉没用的给删掉了,删完之后的CMakeLists张这个样子,是不是清爽很多

图片

删完之后的CmakeLists

不知道你有没有看出问题

接着小鱼进行编译运行

catkin build sim_demosource devel/setup.bashrosrun sim_demo sim_demo

结果错误来了

[rosrun] Couldn't find executable named sim_demo below /root/code/arm/aubo/src/sim_demo[rosrun] Found the following, but they're either not files,[rosrun] or not executable:[rosrun]   /root/code/arm/aubo/src/sim_demo[rosrun]   /root/code/arm/aubo/src/sim_demo/include/sim_demo

编译没错误,运行居然找不到,有点意思 接着小于查看了编译之后生成的文件,发现在build目录下的sim_demo下有可执行文件,这就说明编译没有问题(这个思路大家可以借鉴)

图片

发现了可执行文件

那到底是哪里出了问题呢?想起了删除的时候遇到了一个奇怪东西

catkin_package(#  INCLUDE_DIRS include#  LIBRARIES aubo_demo#  CATKIN_DEPENDS roscpp rospy std_msgs#  DEPENDS system_lib)

明明里面什么都没写,但是这个指令却没有被注释,于是小鱼抱着死马当活马医的想法试了下

居然没问题了

再运行也正常了~

图片

正常运行

总结

所以可以猜测,catkin_package指令可以把当前的包变成一个被ros认可的包,把生成的可执行文件也放到指定的目录,让我们可以使用rosrun指令来运行。

当然大家也可以直接到生成的可执行文件目录,使用./执行文件,也是可以的~