|
发表于 2024-7-6 22:19:42
414 浏览 7 回复
[飞控嵌入式]
easydrone
把代码放在easyrobot_demo下的src下面(和给出的例程在一个地方),然后在配置文件cmakelist中添加了下面三张图片中划横线的语句,然后执行catkin_make clean命令,再执行catkin_make这个命令,发现在devel/lib/easyrobot_demo/中不生成可执行文件。请问这是什么原因?
|
![](plugin.php?id=weijie_qr&data=http%3A%2F%2Fbbs.amovlab.com%2Fforum.php%3Fextra%3Dpage%253D1%26mod%3Dviewthread%26tid%3D44425&code=a0b784b2) 扫一扫浏览分享
|
|
|
|
|
|
|
发表于 2024-7-6 23:06:01
在ROS(Robot Operating System)中添加自己的代码并生成可执行文件通常包括以下步骤:
创建ROS工作空间:
使用catkin_make或catkin build(取决于你使用的ROS版本)来创建一个新的工作空间。
创建ROS包:
使用catkin_create_pkg命令来创建一个新的ROS包。
编写代码:
在你的ROS包内创建源代码文件,编写你的功能代码。
添加依赖:
确保你的CMakeLists.txt和package.xml文件包含了所有必要的依赖项。
编写CMakeLists.txt:
这个文件定义了如何编译你的代码。确保添加了add_executable和target_link_libraries指令来指定你的可执行文件和链接的库。
编译代码:
使用catkin_make或catkin build在工作空间的根目录下编译你的代码。
测试可执行文件:
编译完成后,使用rosrun命令来运行你的可执行文件并测试功能。
打包和分发:
如果你想要分发你的代码,可以创建一个devel-space或install-space,并使用catkin_make install命令来安装你的包。
下面是一个简化的示例,展示如何在CMakeLists.txt中添加一个可执行文件:
cmake_minimum_required(VERSION 2.8.3)
project(my_package)
find_package(catkin REQUIRED COMPONENTS
std_msgs
geometry_msgs
# 其他依赖
)
add_message_files(
FILES
MyMessage.msg
# 其他消息文件
)
generate_messages(
DEPENDENCIES
std_msgs
geometry_msgs
# 其他依赖的消息
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES my_package
# CATKIN_DEPENDS std_msgs geometry_msgs
# DEPENDS system_lib
)
include_directories(
${catkin_INCLUDE_DIRS}
)
add_executable(my_node src/my_node.cpp)
add_dependencies(my_node ${catkin_EXPORTED_TARGETS})
target_link_libraries(my_node ${catkin_LIBRARIES})
确保替换示例中的my_package、my_node和src/my_node.cpp为你的包名、可执行文件名和源文件路径。
清理构建:
如果需要,使用catkin clean清理构建文件,然后重新编译。
使用ROS环境:
确保在运行可执行文件之前,你已经正确地设置了ROS环境,例如使用source devel/setup.bash。
请注意,这些步骤可能会根据你使用的ROS版本和具体需求有所不同。如果你使用的是ROS 2,步骤会有所不同,特别是在构建系统和命令方面。 |
|
|
|
|
|
|
|
发表于 2024-7-6 23:06:36
|
|
|
|
|
|
|
发表于 2024-7-7 10:47:00
来自手机
|
|
|
|
|
|
|
楼主|
发表于 2024-7-7 15:54:17
非常感谢您的回复我确实没有修改package.xml文件,我修改一下试试看 |
|
|
|
|
|
|
|
楼主|
发表于 2024-7-9 14:03:55
|
|
|
|
|
|
|
楼主|
发表于 2024-7-9 14:04:27
我修改package.xml文件依然没有用这是怎么回事 |
|
|
|
|
|
|
|
发表于 2024-7-18 09:30:52
编译自动过去说明你并没有编译到你刚修改的文件,或者你刚修改的文件也不是节点,没有放在cmakelists.txt。
|
|
|
|
|
|
|
|