目录
1 专栏介绍
本专栏为ROS2的从零基础到应用于落地项目的实用教程,附C++工程级全套代码。
详情:ROS | 实战,教程源码:gorilla_ros_tutorials
2 编译
2.1 编译命令
上一篇文章提到ROS2的工程编译是使用colcon build命令,它所依赖的构建工具是ament,ament的作用是用于管理ROS2功能包的构建、依赖解析和安装等操作。ament_cmake是ament工具集的一部分,它结合了CMake来实现ROS2 C++功能包的编译和构建。
说白点,ament_cmake只是基于CMake又封装了一层,本质上还是cmake的编译方式。
colcon build命令本身可以自带很多参数,另外也兼容cmake的参数,只需在前面加上–cmake-args即可,详细参考:colcon build -h
2.2 编译结果描述
使用colcon build命令后,它会生成build、install、log三个目录。
- build目录:包含了编译过程中生成的中间文件和构建配置文件;
- install目录:最终安装构建结果的地方。当colcon build成功后,所有构建好的可执行文件、库文件、头文件、配置文件及其他相关资源都会被安装到install目录下;
- log目录:存储构建过程中产生的日志文件。
我们最关心的是install内的可执行文件、xxx.so和配置文件,其他的都可以删除。除非特别指定位置,一般情况,可执行文件和xxx.so都在install/package name/lib下,配置文件在install/package name/share内。
例如:hello_world项目,可执行程序在./install/hello_world/lib/hello_world/下,暂无*.so和配置文件。
2.3 注意事项
当项目中修改了CMakeLists.txt文件时,最好将build、install、log目录都删除,避免编译时出现奇怪的问题。
编译时带上-DCMAKE_EXPORT_COMPILE_COMMANDS=ON选项,它指示CMake在build目录下生成一个名为compile_commands.json的文件。这个文件包含了项目中每个源文件的完整编译命令。
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
compile_commands.json文件最大的作用在于集成开发环境(IDE)的支持,使得IDE可以提供代码导航、语法检查、智能提示等功能。


3121

被折叠的 条评论
为什么被折叠?



