ros2 基础学习04 -colcon构建工具

一、colcon构建工具介绍

1.1 构建系统与构建工具

构建系统与构建工具区分点在于针对的对象不同,构建系统只针对一个单独的包进行构建,而构建工具重点在于按照依赖关系依次调用构建系统完成一系列功能包的构建。

1.2 构建系统

构建系统包括CMake、Python setuptools、catkin。

在这里插入图片描述
catkin基于CMake,并提供了一组方便的函数,使编写CMake包更容易。它自动生成 CMake 配置文件以及 pkg 配置文件。它还提供了注册不同类型测试的函数。python setuptools是用来创建和分发ROS的Python包。

1.3 构建工具

构建工具包括 catkin_make、catkin_make_isolated、python-catkin-tools、ament_tools、colcon。

在这里插入图片描述

  • catkin_make :由包含ROS 1构建系统的ROS软件包catkin提供。该构建工具仅调用CMake一次,并使用CMake的函数 add_subdirectory()在单一环境中处理所有软件包。

  • catkin_make_isolated:也是由包含ROS 1构建系统的ROS软件包catkin提供的。该构建工具是在catkin_make之后开发的,用于解决在单一CMake环境中构建多个软件包所涉及的问题。

  • catkin_tools:是由用于构建ROS 1软件包的独立Python软件包提供的。该构建工具是在- catkin_make / catkin_make_isolated之后开发的,用于并行构建多个软件包并提供显著的可用性改进。该构建工具支持构建CMake软件包并且单独构建这些软件包,以及支持跨软件包并行处理过程。

  • ament_tools是ament为早期ROS2提供的一种工具,可以让用户完成功能包的编译、测试、安装、卸载,而且它本身也是一个Python的功能包。

1.4 colcon构建工具

colcon 是一个构建软件包集合的命令行工具,是ros构建工具catkin_make、catkin_make_isolated、catkin_tools 和ament_tools的迭代版本,其设计目的是为了开发一款通用的软件包构建工具,可以依赖不同的构建工具(如catkin_cmake, ament_tool等),支持不同的构建系统(如catkin, ament等)。

ROS2Bouncy
版本之前的构建工具使用的是ament_tool,之后(foxy、Humble版本)的构建工具统一使用colcon。但ROS2默认是没有安装colcon的,需要单独安装。

常用命令速查

创建符号连接,每次调整 launch文件时都不必重新build,如果install的文件需要拷贝到另外的机器使用,不要使用这个参数,否则会找不到源文件。

colcon build --symlink-install

编译一个单独的包,但这个指令并不会编译该包的依赖,往往会报错。

colcon build --packages-select <name-of-pkg>

编译一个单独的包和其依赖编译

colcon build --packages-up-to <name-of-pkg>

编译时忽略指定包

colcon build --packages-ignore <name-of-pkg>

编译开启Debug模式

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Debug

编译开启Release模式

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

编译一个package 并且把log 显示在屏幕上

colcon build --packages-select rmw_coredds_shared_cpp --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Debug --event-handlers=console_direct+

设置编译优化等级

colcon build --packages-select examples_rclcpp_minimal_action_client --symlink-install --cmake-args -DCMAKE_CXX_FLAGS='-o0 -ggdb' -DCMAKE_C_FLAGS='-o0 -ggdb'

colcon build --cmake-args -DCMAKE_CXX_FLAGS=“-O2 -g -Wall "
“-D” --宏定义,每定义一个就在前边加上”-D",给gcc传递参数,-g debug选项, gdb模式,符号表会保存,-s link选项,删除符号表,这一步会极大减少文件体积。

参考:

colcon docs:https://colcon.readthedocs.io/en/released/reference/verb/build.html
colcon PDF:https://buildmedia.readthedocs.org/media/pdf/colcon/released/colcon.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/624772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【python】进阶--->MySQL数据库(四)

一、主键约束 primary key : 唯一标识数据库中的每一条记录. 被主键的值唯一 主键列不能为null 每个表应该都要设置主键添加主键约束 在创建表时,直接在字段后面添加主键约束 create table 表名 (字段名 类型(长度) primary key )创建表时,不直接在字段后面添加主键…

ChatGPT网站小蜜蜂AI更新了

ChatGPT网站小蜜蜂AI更新了 前阶段郭震兄弟刚开发小蜜蜂AI网站的的时候&#xff0c;写了一篇关于ChatGPT的网站小蜜蜂AI的博文[https://blog.csdn.net/weixin_41905135/article/details/135297581?spm1001.2014.3001.5501]。今天听说小蜜蜂网站又增加了新的功能——在线生成思…

帆软后台(外观配置-主题)文件上传漏洞

漏洞利用 帆软上传主题获取shell&#xff08;管理系统-外观配置&#xff09; 添加主题上传的压缩包中放入shell.jsp马 &#xff08;没有添加主题功能直接构造数据包&#xff09; POST /WebReport/ReportServer?opfr_attach&cmdah_upload&filenametest.zip&widt…

充电桩发生短路故障时应该如何处理

安科瑞武陈燕acrelcy 一、什么是限流式保护器 ASCP系列电气防火限流式保护器是专门为了保护低压配电线路中短路、过载等问题研发&#xff0c;可以有效克服传统断路器、空气开关和监控设备存在的短路电流大、切断短路电流时间长、短路时产生的电弧火花大&#xff0c;以及使用寿…

【uniapp + uView】仿BOSS直聘三级职位列表实现

1. 效果图 2. 完整代码 <template><view class="search-duty-page"><view class=

虾皮广告数据:​如何利用广告数据优化虾皮(Shopee)销售业绩

在虾皮&#xff08;Shopee&#xff09;平台上&#xff0c;广告数据对于卖家来说是至关重要的&#xff0c;它可以帮助卖家了解广告的效果并进行相应的优化。通过监控和分析这些广告数据&#xff0c;卖家可以更好地理解广告的表现&#xff0c;调整广告策略&#xff0c;提高广告的…

数据结构初阶之排序

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力,共赴大厂。 目录 一.前言 二.选择排序 …

大数据深度学习长短时记忆网络(LSTM):从理论到PyTorch实战演示

文章目录 大数据深度学习长短时记忆网络&#xff08;LSTM&#xff09;&#xff1a;从理论到PyTorch实战演示1. LSTM的背景人工神经网络的进化循环神经网络&#xff08;RNN&#xff09;的局限性LSTM的提出背景 2. LSTM的基础理论2.1 LSTM的数学原理遗忘门&#xff08;Forget Gat…

强烈推荐收藏!LlamaIndex 官方发布高清大图,纵览高级 RAG技术

近日&#xff0c;Llamaindex 官方博客重磅发布了一篇博文《A Cheat Sheet and Some Recipes For Building Advanced RAG》&#xff0c;通过一张图给开发者总结了当下主流的高级RAG技术&#xff0c;帮助应对复杂的生产场景需要。 喜欢记得收藏、点赞、关注。 通俗易懂讲解大…

c语言do while循环语句

c语言do while循环语句 c语言do while循环语句 c语言do while循环语句一、do while循环语句格式二、do while 循环案例 一、do while循环语句格式 do while语句先循环后判断,条件不符合就结束循环&#xff0c;条件符合继续循环 do { 代码 } while(表达式);int main() {int a 0…

KEIL MDK 工程(.uvprojx)目录更改后快速修改方法

概述 在项目过多时&#xff0c;为了方便管理&#xff0c; 需借用文件夹命名来&#xff0c;举例&#xff1a; 1、原工程是在“STM32_Test_Project\MDK-ARM”目录下&#xff0c;我现在创建新文件夹&#xff0c;“Test”&#xff0c;避免原来的受污染&#xff0c;或者好管理等等好…

CompletableFuture原理与用法

CompletableFuture 是由Java8引入的&#xff0c;这让我们编写清晰可读的异步代码变得更加容易&#xff0c;该类功能比Future 更加强大。 什么是 CompletableFuture 在Java中CompletableFuture用于异步编程&#xff0c;异步通常意味着非阻塞&#xff0c;运行任务单独的线程&…

大创项目推荐 深度学习疲劳驾驶检测 opencv python

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 &#x1f525; 优…

行业追踪,2024-01-15,含行业对应的etf

自动复盘 2024-01-15 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

继钱江之后,赛科龙也出自动挡?RA401自动挡曝光

QJ在发动赛921的当天&#xff0c;还有一台闪300搭载了自动挡&#xff0c;当天的热度高的离谱&#xff0c;并且后续也经常有人问&#xff0c;这自动挡啥时候上市等等&#xff0c;相信有很多人都想要一台排量大一点的自动挡摩托车&#xff0c;而最新的消息赛科龙也在开发一台&…

Github仓库使用方式

主要参考&#xff1a; 「详细教程」使用git将本地项目上传至Github仓库&#xff08;MacOS为例&#xff09;_github上传代码到仓库-CSDN博客 新建文件夹参考&#xff1a; GitHub使用指南——建立仓库、建立文件夹、上传图片详细教程-CSDN博客 一、新建一个 github 仓库&#…

【算法设计与分析】合并区间

题目(难度中等) 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 示例 1&#xff1a; 输入&#x…

HiddenDesktop:一款针对Cobalt Strike设计的HVNC隐藏桌面工具

关于HiddenDesktop HiddenDesktop是一款针对Cobalt Strike设计的HVNC隐藏桌面工具&#xff0c;该工具专为红队研究人员设计&#xff0c;支持通过远程桌面会话来与目标远程设备执行交互。 值得一提的是&#xff0c;该工具并没有使用到VNC协议&#xff0c;但却能够实现类似的效…

NLP论文阅读记录 - 2021 | WOS 使用分层多尺度抽象建模和动态内存进行抽象文本摘要

文章目录 前言0、论文摘要一、Introduction1.3本文贡献 二.前提三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Abstractive Text Summarization with Hierarchical Multi-scale Abstraction Modeling and Dy…

原生IP代理如何帮助跨境电商店铺做谷歌广告投放业务的?

随着全球化的发展&#xff0c;越来越多的电商店铺开始拓展跨境业务&#xff0c;而谷歌广告作为全球最大的广告平台之一&#xff0c;为跨境电商店铺带来了巨大的收益和商机。 然而&#xff0c;由于谷歌广告的地域限制和审查机制&#xff0c;店铺很难直接进行投放业务&#xff0…